这是我当前表的一个示例:
1)表名称:TotalSales
Name Year Month Sales ------ ---- ----- ----- Alfred 2011 1 100
我想做的是创建一个像这样的表,添加一个新行(前一个月的销售):
2)表名称:TotalSales
Name Year Month Sales Prior month sales ------ ---- ----- ----- ----------------- Alfred 2011 2 110 100
不知道如何做到这一点,但这就是我一直在从事的工作:
SELECT Name, Year, Month, Sales, Sales as [Prior Month sales] FROM TotalSales WHERE DATEPART(month, [Prior Month sales]) = DATEPART(month, DATEADD(month, -1, getdate()))
谢谢你的帮助
要选择给定的数据,您需要将表连接到自身:
SELECT TS.name, TS.year, TS.month, TS.sales, COALESCE(TS2.sales, 0) AS prior_month_sales FROM TotalSales TS LEFT OUTER JOIN TotalSales TS2 ON TS2.name = TS.name AND ( (TS2.year = TS.year AND TS2.month = TS.month - 1) OR (TS.month = 1 AND TS2.month = 12 AND TS2.year = TS.year - 1) )
LEFT OUTER JOIN如果他们上个月(或这是他们在公司的第一个月)没有任何销售,这是一个外部加入。
LEFT OUTER JOIN