2017-09-02 50 views
0

我有一個表顯示不同的行和列。我想從該表中獲取數據集。但我沒有任何想法做到這一點。所以我顯示了我的表格和來自該表格的結果...請幫助我進行查詢以生成結果。首先感謝我顯示我的表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 

其實我想根據UC-名稱在每個病房實體計數

(再次問::我有一個表它顯示不同的行和列,我想從該表中獲取數據集,但我沒有任何想法,所以我顯示了我的表和來自該表的結果...請幫助我進行查詢以生成結果。首先感謝我展示我的桌子)

+0

如果'Word_no'限制爲一組預定義值,那麼你可以使用*有條件聚集*要得到你想要的東西。你可以在這裏找到很多相關的例子。 –

+0

是的每個UC有6個單詞。作爲具有1字,2號病房,3號病房,4號病房,5號病房,6號病房的UC-1。 – user2638158

+0

[SQL查詢以單行返回分組結果]的可能重複(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

相關問題