【发布时间】:2014-04-30 17:39:43
【问题描述】:
我有三个单独的表来存储数据。
Table1(每周执行和存储。使用上周的数据(例如 4/27 到 5/3)):
Date Value1 Value2
5/3/2014 56 13
5/10/2014 12 25
5/17/2014 90 52
5/24/2014 82 36
5/31/2014 76 98
6/7/2014 34 25
6/14/2014 13 63
6/21/2014 45 98
...
Table2(每周执行和存储。使用上周的数据(例如 4/27 到 5/3)):
Date Value3 Value4
5/3/2014 54 62
5/10/2014 43 36
5/17/2014 90 43
5/24/2014 54 35
5/31/2014 76 45
6/7/2014 34 43
6/14/2014 23 37
6/21/2014 34 56
...
Table3(从 4 月 27 日起每天执行和存储等):
Date Value5 Value6
4/27/2014 56 45
4/28/2014 34 34
4/29/2014 23 34
4/30/2014 15 90
5/1/2014 34 23
5/2/2014 45 12
5/3/2014 46 35
5/4/2014 67 38
5/5/2014 34 23
...
如何编写一个按月计算每一列的查询?
我的桌子看起来像这样:
Month Value1 Value2 Value3 Value4 Value5 Value6
April NULL NULL NULL NULL 128 203
May 316 224 317 221 226 131
我有查询获取当前月份的第一天:
CAST(DATEADD(d, - DATEPART(d, @DATE) + 1, @DATE) as DATE)
下个月的第一天:
CAST(DATEADD(d, - DATEPART(d, @DATE) + 1, DATEADD(m, 1, @DATE)) as DATE)
我认为我的查询可能是这样的:
SELECT
DATENAME(MONTH, @DATE) as [Date],
(SELECT [Value1] From [database].[dbo].[Table1]
WHERE [Date] >= CAST(DATEADD(d, - DATEPART(d, @DATE) + 1, @DATE) as DATE)
AND [Date] < CAST(DATEADD(d, - DATEPART(d, @DATE) + 1, DATEADD(m, 1, @DATE)) as DATE)
) AS [VAL1],
(SELECT [Value2] From [database].[dbo].[Table1]
WHERE [Date] >= CAST(DATEADD(d, - DATEPART(d, @DATE) + 1, @DATE) as DATE)
AND [Date] < CAST(DATEADD(d, - DATEPART(d, @DATE) + 1, DATEADD(m, 1, @DATE)) as DATE)
) AS [VAL2],
(SELECT [Value3] From [database].[dbo].[Table2]
WHERE [Date] >= CAST(DATEADD(d, - DATEPART(d, @DATE) + 1, @DATE) as DATE)
AND [Date] < CAST(DATEADD(d, - DATEPART(d, @DATE) + 1, DATEADD(m, 1, @DATE)) as DATE)
) AS [VAL3],
(SELECT [Value4] From [database].[dbo].[Table2]
WHERE [Date] >= CAST(DATEADD(d, - DATEPART(d, @DATE) + 1, @DATE) as DATE)
AND [Date] < CAST(DATEADD(d, - DATEPART(d, @DATE) + 1, DATEADD(m, 1, @DATE)) as DATE)
) AS [VAL4],
HOW TO DO VALUE5,
HOW TO DO VALUE6
INTO [database].[dbo].[tablemonthly]
我请求一些帮助以完成上述查询。
另外,我如何在上面的查询中使用IIF 语句,这样它只添加一次行并且只更新 Value5 和 Value6,因为它是 DAILY 并保持另一个完整,因为它将是更大的存储过程的一部分每天运行哪个?
我的三张桌子是:
【问题讨论】:
标签: sql sql-server date