我有SQL Server表的值,如下所示:
Account - Date - Amount - Summary
10000 - 2010-1-1 - 50.00 - 0.00
10000 - 2010-2-1 - 50.00 - 0.00
10000 - 2010-3-1 - 50.00 - 0.00
10000 - 2010-4-1 - 50.00 - 0.00
10000 - 2010-5-1 - 50.00 - 0.00
10000 - 2010-6-1 - 50.00 - 0.00
10000 - 2010-7-1 - 50.00 - 0.00
10000 - 2010-8-1 - 50.00 - 0.00
10000 - 2010-9-1 - 50.00 - 0.00
10000 - 2010-10-1 - 50.00 - 0.00
10000 - 2010-11-1 - 50.00 - 0.00
10000 - 2010-12-1 - 50.00 - 600.00
10001 - 2010-1-1 - 50.00 - 0.00
10001 - 2010-2-1 - 60.00 - 0.00
10001 - 2010-12-1 - 60.00 - 170.00
这是该表的基本快照。 “摘要”字段给出了日期列中年末金额的总和,但仅限于MONTH(日期)='12'时。对于数百个帐户来说,这种方式也是如此,大约还有4年。我想在这个现有的表中添加一个列,名为“SummaryPreviousYear”。 SummaryPreviousYear列应具有MONTH(Date)='12'和上一年的金额之和。我想在帐号上加入此列,以便它位于“摘要”列旁边,并提供与“值”值相同的值。谁能帮我这个?我把头发拉到这里。任何帮助将不胜感激。
答案 0 :(得分:0)
假设[Account]
和[Date]
是唯一的,只需将JOIN
放在同一张桌子上:
SELECT
a.* -- you should explicitly list the columns you want, though
,b.[Summary] SummaryPreviousYear
FROM
myTable a
JOIN
myTable b
ON b.[Account] = a.[Account]
AND DATEPART("yyyy" , b.[date] ) = DATEPART("yyyy" , a.[date] ) - 1
AND DATEPART("mm" , b.[date] ) = 12
-- AND whatever other conditions define unique rows
对于任何数据点,第一年和第12年的行不应超过一行。如果您想要第一年行的NULL
值,请改为LEFT OUTER JOIN
。