Sql Server:按月、年和按某项分组计算数据
首先,我的表结构类似于这样:
CREATE TABLE Testing(
[ID] NVARCHAR(50),
[DATE] DATETIME,
[TOTAL] INT,
[ITEM] NVARCHAR(50),
[Warehouse] NVARCHAR(50)
)ON[PRIMARY]
我在这里放了一些示例:
[ID] [Date] [Total] [Item] [Warehouse]
1 2011-04-04 400 A0001 B12
2 2011-05-04 500 A0001 B13
3 2011-04-30 400 A0001 B12
4 2011-04-25 400 A0001 B13
5 2011-06-05 600 A0001 B12
6 2011-03-02 300 A0001 B11
7 2011-05-28 500 A0001 B13
我也尝试按 [Item] 和 [Warehouse] 和 [Date] 按月进行分组 例如输出:
结果应该是这样的
[Date] [Total] [Item] [Warehouse]
March 2011 300 A0001 B11
April 2011 800 A0001 B12
June 2011 500 A0001 B12
April 2011 400 A0001 B13
May 2011 1000 A0001 B13
我尝试了类似的sql,我在月份和年份部分解析以做出选择
SELECT [Item],[Warehouse],SUM(Total) AS Total
FROM [Testing]
WHERE Datepart(month,[Date]) = 4 AND DATEPART(year,[Date]) = 2011
GROUP BY [Item],[Warehouse]
我得到了预期的结果?有什么办法吗?我实际上试图根据仓库和项目来得出每个月和每年的接近平衡?
对我来说,它需要循环遍历前缀表。 无论如何都要这样做吗?
谢谢
问候 良克
First of all, my table structure is something similar like this:
CREATE TABLE Testing(
[ID] NVARCHAR(50),
[DATE] DATETIME,
[TOTAL] INT,
[ITEM] NVARCHAR(50),
[Warehouse] NVARCHAR(50)
)ON[PRIMARY]
I put some sample here:
[ID] [Date] [Total] [Item] [Warehouse]
1 2011-04-04 400 A0001 B12
2 2011-05-04 500 A0001 B13
3 2011-04-30 400 A0001 B12
4 2011-04-25 400 A0001 B13
5 2011-06-05 600 A0001 B12
6 2011-03-02 300 A0001 B11
7 2011-05-28 500 A0001 B13
I am trying to group by [Item] and [Warehouse] and [Date] by month as well
For example output:
The result should be like this
[Date] [Total] [Item] [Warehouse]
March 2011 300 A0001 B11
April 2011 800 A0001 B12
June 2011 500 A0001 B12
April 2011 400 A0001 B13
May 2011 1000 A0001 B13
I tried the sql something like, that i parse in month and year part to made the selection
SELECT [Item],[Warehouse],SUM(Total) AS Total
FROM [Testing]
WHERE Datepart(month,[Date]) = 4 AND DATEPART(year,[Date]) = 2011
GROUP BY [Item],[Warehouse]
I get the expected result?Is there any way to do? i actually trying to came out a close balance for each month and year by distinct of warehouse and item?
Sound to me its need to loop through a prefix table..
Its that anyway to do so?
Thanks
Regards
Liangck
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
查看以下函数
DATENAME (Transact-SQL) 和 < a href="http://msdn.microsoft.com/en-us/library/aa258265%28v=sql.80%29.aspx" rel="nofollow">DATEPART
看一下下面的示例
结果:
Have a look at the following functions
DATENAME (Transact-SQL) and DATEPART
Have a look at the example below
Results:
我认为在 SQL Server 端格式化日期(通常)是一个想法,但无论如何你可以尝试:
I think that formatting date on SQL Server side is (usually) a bed idea, but anyway you can try: