2016-04-23 18 views
0

私は、2つのフィールドの国と都市を持つテーブルを持っています。私はこれを転記したいと思っています。私は国のフィールドを私の見出しとし、各都市はフィールドの下にあるフィールドを持っています。SQL Serverの国と都市の転記

私は私が私の下に付属のコードを使用して結果を得るが、ヌル

SELECT 
    CASE WHEN Country = 'USA' then City end as USA, 
    CASE WHEN Country = 'India' then City end as India, 
    CASE WHEN Country = 'UK' then City end as UK 
FROM Country 

Result from code

で私の質問は、私はヌルなしで結果を得るのですかですか?

答えて

1

あなたは最大(CASE ... END)

か、ピボット使用することができます.... ASとしてこれらを集約することができます:あなたは、あなたが探している結果を達成するために

SELECT 
    p.* 
FROM 
    Country 
    PIVOT (MAX(City) FOR Country IN (USA, India, UK)) P 

をそのように({ロサンゼルス1:::ニューヨーク、2}:USなど):「各都市の各国固有の識別子を導入する必要があるでしょう

select * 
from 
(
    select 
     *, 
     ROW_NUMBER() over (partition by country order by City, Country) id 
    from Country 
) c 
pivot 
(
    max(city) for country in(usa, uk, india) 
) p 
+0

これらの両方は1行のデータしか返しません – dnasim

+0

したがって、各国に複数の都市があり、市の列を含む国名列を生成したいと思いますか? – mrtig

+0

はいコードのすぐ下にある現在の結果の画像へのリンクを提供しました。私は国ごとに3つの都市を持ち、すべてを見たいと思っています。 3列と3行が私の希望する出力です – dnasim

0

あなたは条件付き集約を使用してこれを行うことができます。

SELECT MAX(CASE WHEN Country = 'USA' then City end) as USA, 
     MAX(CASE WHEN Country = 'India' then City end) as India, 
     MAX(CASE WHEN Country = 'UK' then City end) as UK 
FROM Country 
GROUP BY City; 
+0

これは私の最初の行だけを返します – dnasim

関連する問題