0

システムに追加された製品の数を月ごとにグループ化する SQL クエリがあります。このクエリは先週実行し、今日も実行しました。今日の結果は別の順序になっているようです。このクエリを実行して、2 番目の列に月を表示することはできますか?

これが私の元のクエリです:

SELECT COUNT(*)
FROM dbo.Products p
WHERE YEAR(t.CreatedDate) = '2013' 
  AND t.Deleted = 0 
  AND t.RemovedFromSale = 0
GROUP BY MONTH(t.CreatedDate)

これは以下を返します。

 | (No Column Name)
1| 2009
2| 161
3| 98

理想的には、次のようなものが欲しいです:

 | (No Column Name) | Month Name
1| 2009             |  
2| 161              |
3| 98               |

クエリを変更することでこれは可能ですか?

4

3 に答える 3

4

を返したい場合は、リストMONTH(t.CreatedDate)に列を含める必要があります。SELECT

SELECT COUNT(*) as Total,
  MONTH(t.CreatedDate) as Month
FROM dbo.Products p
WHERE YEAR(t.CreatedDate) = '2013' 
  AND t.Deleted = 0 
  AND t.RemovedFromSale = 0
GROUP BY MONTH(t.CreatedDate)

MONTH()月を整数で返します。月を名前として返したい場合は、次を使用する必要がありますDATENAME()

SELECT COUNT(*) as Total,
  DATENAME(month, t.CreatedDate) as Month
FROM dbo.Products p
WHERE YEAR(t.CreatedDate) = '2013' 
  AND t.Deleted = 0 
  AND t.RemovedFromSale = 0
GROUP BY DATENAME(month, t.CreatedDate)
于 2013-03-12T10:45:02.953 に答える
2

SQLを次のように変更します

SELECT COUNT(*), MONTH(t.CreatedDate)
  FROM dbo.Products p
  WHERE YEAR(t.CreatedDate) = '2013' AND t.Deleted = 0 AND t.RemovedFromSale = 0
  GROUP BY MONTH(t.CreatedDate)
于 2013-03-12T10:44:53.660 に答える
1

試す:

SELECT 
    COUNT(*), DATENAME(m, CreatedDate) [MonthName]
FROM dbo.Products p
WHERE YEAR(t.CreatedDate) = '2013' AND t.Deleted = 0 AND t.RemovedFromSale = 0
GROUP BY DATENAME(m, CreatedDate)
于 2013-03-12T10:47:46.373 に答える