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
我要行結合成不同的列
我有這樣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
我要行結合成不同的列
對於當前採樣數據所需的輸出表結構,這是簡單的數據透視案例:
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
如果有很多值的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;
我想你會需要爲這個動態SQL,因爲'taxper'值可能每次運行查詢時都是未知的(並且是可變的)。 –
如果'納稅人'有很多價值? – Blank
更常見的用例是您想要顯示四分位數(25%增量)或分位數(20%增量)。如果這對你有用,那麼一個簡單的數據透視查詢就足夠了。 –