Par*_*h J 2 sql select group-by sql-server-2008
我试图找出如何通过查询得到以下结果,但无法做同样的事情.
表名:ProductMaster
ProductCode Quantity EntryDate
A1 10 10/03/2015
A1 10 15/03/2015
A2 10 18/03/2015
A2 10 25/03/2015
A1 10 10/04/2015
A2 10 15/04/2015
Run Code Online (Sandbox Code Playgroud)
我想获得结果如果我选择3月份,结果应该是:
ProductCode MonthCount TotalCount
A1 20 30
A2 20 30
Run Code Online (Sandbox Code Playgroud)
如果我选择4月份,结果应为:
ProductCode MonthCount TotalCount
A1 10 30
A2 10 30
Run Code Online (Sandbox Code Playgroud)
我的查询:
SELECT ProductCode, SUM(Quantity)
FROM ProductMaster
WHERE DATEPART(MONTH, EntryDate) = @Month
GROUP BY ProductCode
Run Code Online (Sandbox Code Playgroud)
在哪里@month = 3或4基于输入.
另外,我如何获得产品代码的数量.对于Month = 3
ProductCode MonthCount TotalCount
A1 2 3
A2 2 3
Run Code Online (Sandbox Code Playgroud)
您可以使用case基于以下内容的表达式@Month:
SELECT ProductCode,
SUM (CASE WHEN MONTH(EntryDate) = @Month THEN Quantity ELSE 0 END)
AS MonthCount,
SUM (Quantity) AS TotalConount
FROM ProductMaster
GROUP BY ProductCode
Run Code Online (Sandbox Code Playgroud)
编辑:
要回答编辑过的问题,您可以使用相同的技术count而不是sum:
SELECT ProductCode,
COUNT (CASE WHEN MONTH(EntryDate) = @Month THEN Quantity ELSE NULL END)
AS MonthCount,
COUNT (*) AS TotalConount
FROM ProductMaster
GROUP BY ProductCode
Run Code Online (Sandbox Code Playgroud)