[英]T-SQL How to select count of one column's values where another column's values are the same
如何选择零件相同的标签数量?
Part | Label
------+-------
a | L1
a | L2
a | L3
b | L1
b | L2
预期成绩:
Part | LabelCount
------+------------
a | 3
b | 2
注意:所有数据类型都是字符串。 我尝试分区以获得最大行数,但是 ROW_NUMBER() 上的 MAX 函数没有响应我一直在做的方式,无论我是否使用 MAX,它都只是返回所有行。
;WITH RowNumCTE AS
(
SELECT
[PartName],
ROW_NUMBER() OVER (PARTITION BY [Part] ORDER BY [Label] ASC) AS rn
FROM
[PartTable]
)
SELECT DISTINCT
[Part],
MAX([rn]) AS [LabelCount]
FROM
RowNumCTE
GROUP BY
[Part], [rn]
实际结果:
Part | LabelCount
------+------------
a | 1
a | 2
a | 3
b | 1
b | 2
我已经在 StackOverflow 中列出了类似的问题,就像这个,但不知道如何将答案应用于这种情况。
你似乎只想要group by
:
select part, count(*) as labelcount
from t
group by part;
如果零件上有重复的标签,则:
select part, count(distinct label)
. . .
简单分组
select part,count(*) from t
group by part
您对预期 o/p 的处理是错误的且非常复杂。
您想要的 o/p 与组的子分区无关,就像您通过 partition by 等所做的那样,而是一个简单的group by
就像上面的答案一样。
select part,count(*) from t
group by part -- as only partwise
count is required
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.