抱歉,问题标题很差。希望我能在这里澄清一下:我不确定这在技术上是 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
我想要两个额外的列来按产品显示下载次数,而不仅仅是总数。所需的输出将如下所示:
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”是数据库中将包含“产品 A”或“产品 B”的字段
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 Server 2008 R2。
提前致谢, 比姆斯