【发布时间】:2019-04-30 06:24:54
【问题描述】:
我有一张这样的桌子
col1ID col2String Col3ID Col4String Col5Data
1 xxx 20 abc 14-09-2018
1 xxx 20 xyz 14-09-2018
2 xxx 30 abc 14-09-2018
2 xxx 30 abc 14-09-2018
我想添加一列,按 col1ID 和 col3ID 计算我在 col4String 组中有多少个不同的字符串。
类似
COUNT(DISTINCT (Col4String)) over (partition by col1ID, col3ID)
但它不起作用,我收到一个错误
OVER 子句不允许使用 DISTINCT。
消息 102,第 15 级,状态 1,第 23 行。
我有更多列,如 col2String、col5Data,但它们不应该受到影响,所以我不能在 SELECT 的开头使用 distinct,而 dense_rank() 在我的情况下似乎也不起作用。
感谢您的帮助。
【问题讨论】:
-
DISTINCT不是函数,即不需要括号。只需执行COUNT(DISTINCT Col4String) over ...即可使代码更清晰。 -
没有括号也不行
-
抱歉,我没有尝试回答这个问题,这只是一个一般性建议。
标签: sql sql-server tsql count distinct