【发布时间】:2011-07-29 13:35:15
【问题描述】:
这是我当前的表的示例:
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()))
感谢您的帮助
【问题讨论】:
-
您想创建一个表还是希望能够选择数据?我非常建议不要创建一个新表。即使在同一个表中,它也会导致数据库中的数据重复,这违反了数据库设计的基本规则之一。这样做有很多陷阱。
-
同意 - 您可以获取我发布的查询并创建一个视图,以便数据始终可用
-
只是对我上一条评论的快速补充......因为表格本身看起来像一个报告表,希望只能通过批处理更新以用于报告目的,如果您这样做可能没什么大不了的然后将数据也放入另一个表中。
-
您好,感谢您的回答,现在就尝试一下。
-
请记住,如果您尝试将这些数据保存在单独的行中(而不是像 Derek 建议的那样使用视图),那么如果有人现在更新原始行,它将不会反映在您的新月份数据。它将不同步。这些同步问题总是让人头疼,这就是为什么将重复数据保存在普通数据库中通常是个坏主意。
标签: sql copy reporting datepart