我的以下查询给出了图 1 中所示的输出。我想对其进行更改,以便它给出图 2 中的输出。我想显示每周(即使该值为 0) 这是查询。请帮忙。
SELECT @MaxDate = @MaxDate
,@MinDate = dateadd(week, (@LastXWeeks + 1), @MaxDate);
WITH AllDates
AS (
SELECT @MinDate AS xDate
UNION ALL
SELECT Dateadd(day, 1, xDate)
FROM AllDates AS ad
WHERE ad.xDate < @MaxDate
)
SELECT 'playing' AS activity
,ad.xDate
,Isnull(t.TimePerDay, 0) AS TimePerDay
FROM AllDates AS ad WITH (NOLOCK)
LEFT JOIN @test AS t ON ad.xDate = t.DATE
最佳答案
您希望每周获得结果,因此按周分组:
WITH AllDates
AS (
SELECT @MinDate AS xDate
UNION ALL
SELECT Dateadd(day, 1, xDate)
FROM AllDates AS ad
WHERE ad.xDate < @MaxDate
)
SELECT
'playing' AS activity
,min(ad.xDate) -- or max or the week number, whichever you like best
,Isnull(sum(t.TimePerDay), 0) AS TimePerDay
FROM AllDates AS ad WITH (NOLOCK)
LEFT JOIN @test AS t ON ad.xDate = t.DATE
GROUP BY datepart(wk, ad.xDate);
关于sql - 如何修改以下代码以忽略带 0 的行并每周显示输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31875386/