Sql-Server
為同一表的其他列中的每個不同值查找每一行中出現的值
我需要一個 select 語句,它從 Column 中查找值,該值
B
出現在A
. 在我的範例中意味著它將返回:x
因為x
出現在A
. (1,2,3 和 4)我不知道 Column 中有哪些值,
B
所以我無法在查詢中指定它。如何在 SQL Server 2014 中實現這一點?+---+----+ | A | B | +---+----+ | 1 | x | | 2 | x | | 3 | y | | 4 | y | | 3 | x | | 4 | x | +---+----+
按 B 計算不同的 A 分組,並返回 count(distinct A) 匹配的那些。
select B, count(distinct A) from table_AB group by B having count(distinct A) = (select count(distinct A) from table_AB); B A === === x 4
您也可以
row_number()
使用drop table #Table1 CREATE TABLE #Table1 ([A] int, [B] varchar(1)) ; INSERT INTO #Table1 ([A], [B]) VALUES (1, 'x'), (2, 'x'), (3, 'y'), (4, 'y'), (3, 'x'), (4, 'x'), (4, 'y'), (5, 'y'), (5, 'x') ; ;with cte as ( select *, row_number() over (partition by B order by (select null)) as rn from #Table1 ) select B from cte where rn = (select max(rn) from cte)