2016-05-14 85 views
-2

我有數據庫如下:如何使用SELECT DISTINCT

npw | sales_name | sales_type | Region | 
----------------------------------------- 
    1 | Rob  | private 1 | 1 | 
    2 | Cait | private 2 | 2 | 
    3 | Blue | public  | 4 | 
    4 | ReD  | public  | 3 | 
    5 | Max  | private 1 | 2 | 

,我想使它看起來像:

region| private 1 | private 2 | public  | 
----------------------------------------------- 
    1 |  -  |  -  |  -  | 
    2 |  -  |  -  |  -  | 
    3 |  -  |  -  |  -  | 
    4 |  -  |  -  |  -  | 

,所以我想不同的地區列作爲行和不同的sales_type列作爲列標題。將來可能會增加新的sales_type。 什麼SQL查詢&使新的sales_type自動添加到新的列標題?

+0

選擇一個數據庫請 – e4c5

+0

哪個RDBMS你實現這樣的結果正在使用 ? mysql,sql-server,oracle?相應地標記問題。 –

+0

根據數據,多少個sales_type只能有3個? –

回答

1

您可以通過CASE WHENGROUP BY

SELECT 
    Region, 
    CASE 
     WHEN sales_type = 'private 1' 
     THEN sales_type 
     ELSE '-' END AS 'private 1', 
    CASE 
     WHEN sales_type = 'private 2' 
     THEN sales_type 
     ELSE '-' END AS 'private 2', 
    CASE 
     WHEN sales_type = 'public' 
     THEN sales_type 
     ELSE '-' END AS 'public' 
FROM your_table 
GROUP BY Region; 
+0

所以我必須每次編輯查詢新的sales_type添加?像私人3. –

+0

你還沒有提到你有其他sales_type。 @NamikazeSheena – 1000111

+0

theres a posibility。 –

1

嘗試以下

select Region, 
    case when sales_type in('private 1') then sales_name else '' end private1, 
    case when sales_type in('private 2') then sales_name else '' end privat2, 
    case when sales_type in('public') then sales_name else '' end public 
from Table1 

支票存入sqlfiddle