2017-09-02 11 views
0

私は異なる行と列を示すテーブルを持っています。私はそのテーブルからデータセットが必要です。しかし、私はそれを作る考えがありません。だから私はテーブルとそのテーブルから結果を表示しています...その結果を生成するためのクエリを作成すると私を助けてください。おかげで最初の私は実際に私は、エンティティカウントはすべての区でUC-名前postgres与えられたテーブルから必要なデータセットを作るためのクエリ

に応じて(再び私はテーブルを持っている::求めたい私のテーブル

UC_Name | Word_No | entity 
UC-1  - w-1  -  a 
UC-1  - w-2  -  a 
UC-1  - w-3  -  a 
UC-2  - w-1  -  a 
UC-2  - w-2  -  a 
UC-2  - w-2  -  b 
UC-1  - w-1  -  a 
UC-3  - w-3  -  b 
UC-4  - w-2  -  c 

今すぐ

UC-Name | w-1  |  w-2 | w-3 

UC-1  - 2  -  1  - 1 
UC-2  - 1  -  2  - 0 
UC-3  - 0  -  0  - 1 
UC-4  - 0  -  1  - 0 

として結果を示すいますそれは異なる行と列を示しています。私はそのテーブルからデータセットが欲しいですが、私はそれを作ることを考えていないので、私はそのテーブルからテーブルと結果を表示しています...その結果を生成するためにおかげさまで私はテーブルを見せています)

+0

'Word_no'は、定義済みの値のセットに制限されているなら、あなたはあなたが欲しいものを手に入れる*条件付き集約*を使用することができます。あなたはここにたくさんの関連する例を見つけることができます。 –

+0

はい、6語を持つすべてのUC。単語1、ワード2、ワード3、ワード4、ワード5、ワード6を持つUC-1として。 – user2638158

+0

[SQLクエリを複製して1つの行としてグループ化した結果を返す](https://stackoverflow.com/questions/34244059/sql-query-to-return-a-grouped-result-as-a-single-行) – krokodilko

答えて

1

あなたのコメントから、私は一定数の病棟があると推測します。動的な病棟を扱っているわけではないので、以下のコードを参考にしてください。

SELECT uc_name 
    ,sum(CASE word_no WHEN 'w-1' THEN 1 ELSE 0 END) AS "w-1" 
    ,sum(CASE word_no WHEN 'w-2' THEN 1 ELSE 0 END) AS "w-2" 
    ,sum(CASE word_no WHEN 'w-3' THEN 1 ELSE 0 END) AS "w-3" 
    ,sum(CASE word_no WHEN 'w-4' THEN 1 ELSE 0 END) AS "w-4" 
    ,sum(CASE word_no WHEN 'w-5' THEN 1 ELSE 0 END) AS "w-5" 
    ,sum(CASE word_no WHEN 'w-6' THEN 1 ELSE 0 END) AS "w-6" 
FROM public.table01 
GROUP BY uc_name 

-HTH

+0

は、 – user2638158

関連する問題