对标题感到抱歉,很难总结我要求的内容。
鉴于此:
SELECT [FirstName], [LastName], '-', [Thing] FROM.....
John Smith - Plow
James Jones - Plow
James Jones - Shovel
James Jones - Axe
Sarah Lee - Hammer
Sarah Lee - Pliers
我需要得到这个:
John Smith - Plow - 1
James Jones - Plow - 3
James Jones - Shovel - 3
James Jones - Axe - 3
Sarah Lee - Hammer - 2
Sarah Lee - Pliers - 2
我需要列出同一个人在行中出现的总次数。
这听起来像一个枢轴解决方案,但枢轴使我的大脑受伤。还有另外一种方法吗?如果没有,任何人都可以解释这个角度,如果这是它必须要来的吗?
谢谢!
答案 0 :(得分:5)
SELECT *,
COUNT(*) OVER (PARTITION BY FirstName, LastName) cnt
FROM mytable
答案 1 :(得分:0)
这可能不是编写它的最有效方法,但可以完成工作。
select
firstname
,Surname
,count(firstname + Surname) over (partition by firstname + surname) as NameOccurences
from table
答案 2 :(得分:0)
我实际上找到了自己的方法。我喜欢“OVER / Partition by”解决方案。更短,但不是我明白他们在做什么。
这是我最终提出的:
with cte as (
select last_name, first_name, count(1) as theCount
from MetalThings
group by last_name, first_name
)
select m.*,
cte.theCount
from MetalThings m
JOIN cte on (m.last_name = cte.last_name and m.first_name = cte.first_name)