とリターンよりも私はテーブルヌル値
Col1 Col2
300 Null
300 A
300 B
400 NULL
を持っていない場合は任意の値は、任意の値がNULLで返さない場合よりもそれを返すよりも、任意の行に存在する場合、私は出力を必要とそれを返すよりも、任意の行に存在する場合値
出力:
Col1 Col2
300 A
300 B
400 Null
とリターンよりも私はテーブルヌル値
Col1 Col2
300 Null
300 A
300 B
400 NULL
を持っていない場合は任意の値は、任意の値がNULLで返さない場合よりもそれを返すよりも、任意の行に存在する場合、私は出力を必要とそれを返すよりも、任意の行に存在する場合値
出力:
Col1 Col2
300 A
300 B
400 Null
Col2がnull以外の値を持つ場合、または同じCol1がCol2にnull以外の値を持たない場合は、行を返します。
select t1.*
from tablename t1
where t1.Col2 is not null
or not exists (select 1 from tablename t2
where t2.Col2 is not null
and t2.Col1 = t1.Col1)
あなたがこれを行うことができます。
select t.*
from t
where t.col2 is not null
union all
select t.*
from t
where t.col2 is null and
not exists (select 1 from t t2 where t2.col1 = t.col1 and t2.co2 is not null);
CREATE TABLE #Tbl(Col1 INT, Col2 VARCHAR(100))INSERT INTO #Tbl(Col1 , Col2)
SELECT 300,Null UNION ALL SELECT 300,'A' UNION ALL SELECT 300,'B' UNION ALL
SELECT 400,NULL
SELECT Col1 , Col2
FROM #Tbl T1
WHERE ISNULL(Col2,'') <> ''
UNION ALL
SELECT Col1 , Col2
FROM #Tbl T1
WHERE NOT EXISTS(SELECT 1 FROM #Tbl T2 WHERE T1.Col1 = T2.Col1 AND ISNULL(T2.Col2,'') <> '')