【发布时间】:2020-04-04 17:50:35
【问题描述】:
我有一些关于选择有组的问题,如果不存在,每个组 WHERE 由“Data1”表示,WHERE 由“NULL 或 Empty”表示,否则不显示
例子:
Table T1 Table when data='00001' Table when data='00002' Table when data=''
Col1 Col2 Col1 Col2 Col1 Col2 Col1 Col2
A 00001 A 00001 A NULL A NULL
A NULL B 00001 B 00002 B NULL
B 00002 C 00001 D NULL D NULL
B 00001 D NULL E 00002 E NULL
B NULL E NULL
C 00001
D NULL
E 00002
E NULL
我的想法是选择表,其中通过数据和与选择表联合,其中 Col2=null 和 Col1 不在第一次选择中
WITH T1 AS
(
SELECT * FROM Table WHERE Col2='00001'
)
SELECT * FROM T1
UNION
SELECT * FROM Table T2
WHERE T2.Col1 NOT IN (SELECT Col1 FROM T1) AND ISNULL(T2.Col2,'')=''
但是如果我有 30k 条记录,那就太慢了
【问题讨论】:
标签: sql sql-server tsql group-by where-clause