0

列 [id]、[number] を持つテーブル [Contracts] があります。また、「12342」、「23252」、「1256532」などの文字列形式の数値もあります。このような出力を取得したい。

1535325 | no
12342   | yes
23252   | yes
434574  | no
1256532 | yes

もちろん、これを記述して行を取得できますが、行が存在しないかどうかを判断して上記の出力を取得するにはどうすればよいですか。

SELECT [Id]
      ,[Number]
  FROM [Contracts]
  where [Number] in 
  ('12342', '23252', '1256532')
4

1 に答える 1

1

一時テーブルまたはテーブル変数に値を入れて、次のことを行うことができますleft join

declare @d table (Number varchar(10))
insert into @d values  ('12342'), ('23252'), ('1256532'), ('xxxx') -- last one is not in Contracts

SELECT c.[Id], c.[Number], case when d.Number is NULL then 'no' else 'yes' end [This Number from C is in D also]
FROM [Contracts] c
    left join @d d on d.Number = c.Number

「反対」用right join

SELECT c.[Id], d.[Number], case when c.Number is NULL then 'no' else 'yes' end [This Number from D is in C also]
FROM [Contracts] c
    right join @d d on d.Number = c.Number
于 2013-07-25T10:11:36.833 に答える