2017-10-03 10 views
-4

私の落書きを理解するために画像リンクをご覧ください。添付の画像ポインタ

テーブルには、アプリケーションにアプローチするためにさまざまな方法を使用したオーストラリアの異なる州のユーザーがいます。

この表には、ユーザーID [id](1,2,3,4,5,6.1.14000)、列approaches(a、b、c、d、e、f)および列states(wa、vic ...)

は今、私は西オーストラリア州、ビクトリア、SA、クイーンズランド州などのような状態名を持つapproachesとして列#1の列と、残りの列名を持つことになり、テーブルを策定する必要が

アプローチ「」行は、異なる州でこのアプローチを使用した人々の合計がありませんでした。victoria 5 wa 0

同様に他の5つのアプローチでは、異なる状態(列)でこのアプローチを使用した人が多数います。

(例:アプローチ 'B' 行優先VIC 3 WA 1 SA2 ...など)

ここでは、画像へのリンクです、それを見てください。 https://i.stack.imgur.com/DldhT.png

+5

"私はそれが明らかにしたホープ.." - いいえ、あなたはしませんでした。 –

+0

サンプルデータと期待される結果を表形式 –

+0

で確実に追加します。ただし、質問を編集しました。 – sunny

答えて

0

次のようなPIVOT文を使用できます。

create table data (id int, [state] nvarchar(100), approaches nvarchar(10)); 
insert into data values 
(1,'nsw','a'), 
(2,'','b'), 
(3,'wa','c'), 
(4,'qld','d'); 

select 
    approaches, 
    [New South Wales]=[nsw], 
    [Western Australia]=[wa], 
    [Queensland]=[qld], 
    [Victoria]=[vic], 
    [South Australia]=[sa], 
    [not available] 
from 
(
    select 
     id, 
     case 
      when [state] ='' then 'not available' 
      else [state] 
     end as [state], 
     approaches 
    from data 
)src 
pivot 
(
count(id) for [state] in ([nsw],[wa],[qld],[vic],[sa],[not available]) 
)p 

see working demo

関連する問題