2017-02-20 13 views
0

おかげさまでこのことがあります。エンティティごとの週当たりの注文量を知りたい。SQLの行を追加する

select 
DATEPART(YEAR, OrderDate) AS 'Year', 
DATEPART(WEEK, OrderDate) AS 'Week', 
COUNT(*) as 'Amount of Orders', 
EntityID 
FROM tblOrder 
WHERE DATEPART(YEAR, tblOrder.OrderDate) = 2015 
GROUP BY EntityID,OrderDate 
ORDER BY Week asc 

結果は良いのですが、私はどこでも二重の行を取得::私はこのクエリを始め

Year | Week | Amount of Orders | EntityID 
2015 | 1 |  1   |  1 
2015 | 1 |  1   |  1 
2015 | 1 |  1   |  1 
2015 | 1 |  1   |  1 
2015 | 1 |  1   |  1 
2015 | 1 |  1   | 15 
2015 | 1 |  1   | 15 

私が達成したい何がある:

Year | Week | Amount of Orders | EntityID 
2015 | 1 |  5   |  1 
2015 | 1 |  2   |  2 
2015 | 1 |  4   |  3 
2015 | 1 |  9   |  4 

のように。私の質問で何がうまくいかないのですか?代わりに、受注日の

+0

「GROUP BY EntityID、OrderDate」が原因である可能性があります。 'OrderDate'は間違いなく完全に一意なエンティティなので、別々の行 –

答えて

2

GROUP BY年と週:

select [Year], [week], EntityID, count(*) 
from 
(
select DATEPART(YEAR, OrderDate) AS 'Year', 
     DATEPART(WEEK, OrderDate) AS 'Week', 
     EntityID 
FROM tblOrder 
WHERE DATEPART(YEAR, tblOrder.OrderDate) = 2015 
) dt 
GROUP BY [Year], [Week], EntityID 
ORDER BY Week asc 

同じ年/週は、異なる日付からの受注を持つことができるため。 GROUP BY日付の場合は、その年/週のいくつかの行が表示されます。

+0

ありがとう!これは役に立ちます! –

0

group by句で同じ式を使用してください。

select DATEPART(YEAR, OrderDate) AS 'Year', 
     DATEPART(WEEK, OrderDate) AS 'Week', 
     EntityID, 
     COUNT(*) as 'Amount of Orders' 
FROM tblOrder 
WHERE DATEPART(YEAR, tblOrder.OrderDate) = 2015 
GROUP BY DATEPART(YEAR, OrderDate), DATEPART(WEEK, OrderDate), EntityID 
関連する問題