2016-03-24 2 views
1

チェックアドレスVOOR同じ行の2つのプロパティと表示

Number FirstName AddressAvenue AddressFloor 
---------------------------------------------- 
1  David  Long Avenue 5th Floor 
2  Bob  Short Avenue NULL 
3  Peter  Middle Avenue 1st Floor 

(どうやら、ボブ彼のアドレスは、フロア番号が含まれていません)。

select 
    p.Number 
    p.FirstName 
    , case when (p.Street like '%Avenue%') then p.Street end as AddressAvenue 
    , case when (p.Street like '%Floor%') then p.Street end as AddressFloor 
from 
    #persons 
; 

ただし、出力は次のとおりです。:

Number FirstName AddressAvenue AddressFloor 
---------------------------------------------- 
1  David  Long Avenue NULL 
2  Bob  Short Avenue NULL 
3  Peter  Middle Avenue NULL 
1  David  NULL   5th Floor 
3  Peter  NULL   1st Floor 

質問私は両方AddressFloor上を取得できますか

は、私は次のクエリを実行して、これを取得するだろうと思いました同じ行ですか?

すべてのヘルプは大歓迎です!

答えて

1

以下で

CREATE TABLE #persons 
(
    Number INT 
    ,FirstName VARCHAR(10) 
    ,Street VARCHAR(50) 
) 

INSERT #persons 
VALUES 
(1, 'David', 'Long Avenue'), 
(2, 'Bob', 'Short Avenue'), 
(3, 'Peter', 'Middle Avenue'), 
(1, 'David', '5th Floor'), 
(3, 'Peter', '1st Floor') 

    --This is the code you really want, I just needed the rest to test it and make sure it worked 
SELECT DISTINCT 
z.Number 
,z.FirstName 
,(SELECT p.Street FROM #persons p where p.Street LIKE '%Avenue%' AND p.Number = z.Number) 
,(SELECT p.Street FROM #persons p where p.Street LIKE '%Floor%' AND p.Number = z.Number) 
FROM #persons z 

DROP TABLE #persons 

結果、この不良少年を試してみてください:

enter image description here

+0

これはまだ私の場合には2回ずつ行を返していますか? – Pr0no

+1

'SELECT'の後に' DISTINCT'を入れてもよろしいですか?私がそれを入れるまで鉱山も繰り返しました –

関連する問題