选择每个客户端ID的不同事件发生次数到新列中

时间:2016-05-03 18:08:14

标签: sql sql-server-2012

我正在尝试创建一个新列,每个客户端ID包含不同服务代码的数量。我在第二个查询中的最后一列全部为0。

SELECT SERVICE_CODE, COUNT(SERVICE_CODE) AS SERVICE_COUNTS
FROM #TAPMAR
GROUP BY SERVICE_CODE

SELECT T.*, COALESCE(D.SERVICE_COUNTS, 0)
FROM #TAPMAR T
LEFT JOIN(
   SELECT SERVICE_CODE, COUNT(*) AS SERVICE_COUNTS
   FROM #TAPMAR
   GROUP BY SERVICE_CODE) D ON D.SERVICE_CODE = T.CASE_NUM;

1 个答案:

答案 0 :(得分:1)

问题可能是join。 。 。我不明白为什么service_code应与case_num匹配。

我建议在任何情况下使用窗口函数:

SELECT T.*,
       COUNT(*) OVER (PARTITION BY SERVICE_CODE) as NumOnService,
       COUNT(*) OVER (PARTITION BY CASE_NUM) as NumOnCase
FROM #TAPMAR T;

这增加了服务和案例的计数。我不确定你真正想要哪一个。