質問のタイトルが悪いのでごめんなさい。ここで明確にできるといいのですが、これが技術的にCTEなのか、それともCTEのように見えるのかはわかりません。とにかく、最初に出力を見ると、私が探しているものをよりよく説明するのに役立ちます。
var_Year var_Month var_Day Total_Downloads
2013 2 25 100
2013 2 24 200
2013 2 23 100
2013 2 22 200
2013 2 21 100
合計だけでなく、製品ごとのダウンロード数を表示する2つの追加列が必要です。その場合、必要な出力は次のようになります。
var_Year var_Month var_Day Total_Downloads Downloads_Prod_A Downloads_Prod_B
2013 2 25 100 50 50
2013 2 24 200 90 110
2013 2 23 100 25 75
2013 2 22 200 125 75
2013 2 21 100 90 10
これが現在のSQLクエリですが、「製品A」と「製品B」の定義がありません。「f_product」は、「ProductA」または「ProductB」のいずれかを含むデータベース内のフィールドであると想定します。
SELECT var_Year, var_Month, var_Day, COUNT(var_Day) AS "Total_Downloads"
FROM
( SELECT
DISTINCT f_downloadIPaddress,
DATEPART(YEAR,f_downloadtimestamp) as var_Year,
DATEPART(MONTH,f_downloadtimestamp) as var_Month,
DATEPART(DAY,f_downloadtimestamp) as var_Day
FROM tb_downloads
) tb_tempcalendar
GROUP BY var_Year, var_Month, var_Day
ORDER BY var_Year desc, var_Month desc, var_Day DESC
現在のCTE内に別のCTEが必要かどうか、またはCOUNT(DISTINCT x)メソッドで実行できるかどうかを判断できないため、困惑しています。どんな援助も大歓迎です。SQL Server2008R2の使用。
よろしくお願いします、Beems