想象一下,我有下面的表。
----------------
ID f1 f2
----------------
A 1001 5001
B 1001 5001
B 1001 5002
B 1002 5001
B 1002 5002
C 1001 5003
C 1001 5004
(每个ID的f1和f2的所有可能的排列组合都存在)有没有什么查询能给我这个?
A 1001
A 5001
B 1001
B 1002
B 5001
B 5002
C 1001
C 5003
C 5004
所有不同的值f1和f2为每个IDthank you。
使用方法 apply
而不使用 union all
:
select distinct t.id, f_val
from table t cross apply
( values (f1), (f2) ) tt(f_val)
order by t.id;
你可以使用 CROSS APPLY
:
SELECT DISTINCT s.ID, s.f
FROM t
CROSS APPLY (SELECT ID, f1 UNION ALL SELECT ID, f2) AS s(ID, f)
希望下面的查询能帮到你。
create
table test(ID
char(1),f1
int, f2
int)
insert
into test values('A',1001,5001),('B',
1001, 5001),('B', 1001, 5002),('B',
1002, 5001),('B', 1002, 5002),('C',1001,5003),('C',1001,5004)
Select
distinct ID, f
from (Select ID, f1
as f From test
union select ID, f2
as f from test) ff