2016-06-17 62 views
0

我有這樣MySQL查詢相結合的行

id | fieldno | fieldvalue Id|taxper|value 
1 | 10  |   2 | 0 | 100  
1 | 20  |   2 | 5 | 110 
1 | 30  |   2 | 10| 200 
1 | 40  | 

id 0% 5% 10 % 
1 100 110 200 

我要行結合成不同的列

+0

我想你會需要爲這個動態SQL,因爲'taxper'值可能每次運行查詢時都是未知的(並且是可變的)。 –

+0

如果'納稅人'有很多價值? – Blank

+0

更常見的用例是您想要顯示四分位數(25%增量)或分位數(20%增量)。如果這對你有用,那麼一個簡單的數據透視查詢就足夠了。 –

回答

0

對於當前採樣數據所需的輸出表結構,這是簡單的數據透視案例:

select 
    id, 
    max(if(taxper=0, value, null)) as `0%`, 
    max(if(taxper=5, value, null)) as `5%`, 
    max(if(taxper=10, value, null)) as `10%` 
from table1 
group by id 

SQLFiddle DEMO HERE

如果有很多值的taxper,那麼你可能需要這樣:

SET @sql = NULL; 
SELECT 
    GROUP_CONCAT(DISTINCT 
    CONCAT(
     'MAX(IF(taxper = ''', 
     taxper, 
     ''', value, NULL)) AS `', 
     taxper, '%`' 
    ) 
) INTO @sql 
FROM Table1; 
SET @sql = CONCAT('SELECT id, ', @sql, ' FROM Table1 GROUP BY id'); 
PREPARE stmt FROM @sql; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

SQLFiddle DEMO HERE