這適用於任何情況下,任何數量的值。只有當案件具有相同數量的值並且每個案例都具有匹配時,它纔會遞增頻率計數,不管順序如何。
CREATE TABLE #Table1
([Case] varchar(1), [Value] int)
;
INSERT INTO #Table1
([Case], [Value])
VALUES
('A', 1992), ('A', 1956), ('A', 1997), ('B', 2000), ('B', 2001), ('C', 1956),
('C', 1992), ('C', 1997), /*('C',1993),*/ ('D', 2005), ('D', 2008), ('E', 1956),
('E', 1992) , ('F', 1956), ('F', 1992), ('G', 1956), ('G', 1992) ;
--Query
select min(a.[Case]) [Case], [Values], count(*) frequency
from (
SELECT t.[Case],
stuff(
(
select ',' + cast (t1.[Value] as varchar(20))
from #table1 t1
where t1.[Case] = t.[Case]
order by t1.[Value]
for xml path('')
),1,1,'') [Values]
FROM #table1 t
GROUP BY t.[Case]
)a
group by [Values]
order by [Case]
結果蒙山值按升序排序
Case \t Values \t frequency
A \t 1956,1992,1997 \t 2
B \t 2000,2001 \t 1
D \t 2005,2008 \t 1
E \t 1956,1992 \t 3
謝謝。原來我的問題是數據會一直出現3次。你的查詢可以處理更復雜的聯繫。這解決了我的問題。 – paddywide
我真的想旋轉表格,以便我可以輕鬆地使用「不同」來計數。有沒有辦法將數據更改爲4列?它會顯示案例,值1,值2,值3 – paddywide
用示例數據和預期結果修改您的問題,稍後我會看到它。 – Horaciux