5 つの数値を格納する 5 つの列 ( ) を持つデータベースがありますA1,A2,A3,A4,A5
。
5つの数字は"1,2,3,4,5"
.
A1 A2 A3 A4 A5
-------------------------------
2 4 5 Null Null
「1」と「3」の欠けている数字を取得したい。5つの数字から欠けている数字を見つけるにはどうすればよいですか?
5 つの数値を格納する 5 つの列 ( ) を持つデータベースがありますA1,A2,A3,A4,A5
。
5つの数字は"1,2,3,4,5"
.
A1 A2 A3 A4 A5
-------------------------------
2 4 5 Null Null
「1」と「3」の欠けている数字を取得したい。5つの数字から欠けている数字を見つけるにはどうすればよいですか?
Select Replace(Replace(Replace(Replace(
Replace('12345',(Cast(Coalesce(A5,0) as varchar(1))),''),
(Cast(Coalesce(A4,0) as varchar(1))),''),
(Cast(Coalesce(A3,0) as varchar(1))),''),
(Cast(Coalesce(A2,0) as varchar(1))),''),
(Cast(Coalesce(A1,0) as varchar(1))),'') from Table1
1 から (この場合) 5 までの整数のテーブルが必要です。
DECLARE @ints table (n int);
INSERT @ints VALUES (1), (2), (3), (4), (5);
次に、表の行の数値を単一の比較可能なセットに取得します。
SELECT x INTO #all FROM (
SELECT A1 as x FROM myTable WHERE ID = myRow
UNION ALL
SELECT A2 as x FROM myTable WHERE ID = myRow
UNION ALL
SELECT A3 as x FROM myTable WHERE ID = myRow
UNION ALL
SELECT A4 as x FROM myTable WHERE ID = myRow
UNION ALL
SELECT A5 as x FROM myTable WHERE ID = myRow
) y
次に、答えを導き出すことができます。
SELECT @ints.n
FROM @ints left join #all on @ints.n = #all.x
WHERE #all.x is null
ORDER BY 1