0

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つの数字から欠けている数字を見つけるにはどうすればよいですか?

4

4 に答える 4

2
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

SQL フィドルのデモ

于 2013-09-18T04:26:30.690 に答える
0

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
于 2013-09-18T04:27:15.390 に答える