如何选择Part相同的Label的数量?
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中找到了类似问题的清单,例如this one,但看不到如何将答案应用于这种情况。
答案 0 :(得分:2)
您似乎只想要group by
:
select part, count(*) as labelcount
from t
group by part;
如果零件上有重复的标签,则:
select part, count(distinct label)
. . .
答案 1 :(得分:0)
简单分组依据
select part,count(*) from t
group by part
答案 2 :(得分:0)
您对预期目标的处理方法是错误的,而且非常复杂。
您所希望的o / p与通过分组等进行分组的子分区没有任何关系,但是如上述答案所述,它只是一个简单的group by
。
select part,count(*) from t
group by part -- as only partwise
count is required