mysql 展平各列 MYSQL 展平表查詢

2021-10-22 04:15:54 字數 2662 閱讀 6424

我對下面的查詢有一些問題,我不確定如何修改它以給我所需的輸出,詳情如下:

select listup.nodenumber as node, listup.station as extension,

case when voiceserver = 1 then keydescription else '' end as 'key1',

case when voiceserver = 2 then keydescription else '' end as 'key2',

case when voiceserver = 3 then keydescription else '' end as 'key3',

case when voiceserver = 4 then keydescription else '' end as 'key4',

case when voiceserver = 5 then keydescription else '' end as 'key5',

case when voiceserver = 6 then keydescription else '' end as 'key6',

case when voiceserver = 7 then keydescription else '' end as 'key7',

case when voiceserver = 8 then keydescription else '' end as 'key8',

case when voiceserver = 9 then keydescription else '' end as 'key9',

case when voiceserver = 10 then keydescription else '' end as 'key10'

from listup

order by listup.nodenumber, listup.station;

輸出如下:

node extension key1 key2 key3 etc.

n100 14311 14311

n100 14311 14308

n100 14311 14309

n100 14311 14314

n100 14311 14412

n100 14311 14535

n100 14311 14316

n100 14311 14456

n100 14312 14312

n100 14312 14442

n100 14312 14311

n100 14312 14314

n100 14312 14456

n100 14312 14309

n100 14312 14308

我想把它全部出現在一條線上,所以這樣扁平化了……

例如.n100 14311 14311 14308 14309 14314 14412 14535 14316 14456

n100 14312 14312 14442 14311 14314 14456 14309 14308

解決方法:

您需要定義group by子句,並使用max聚合來獲取所需的輸出:

select listup.nodenumber as node, listup.station as extension,

max(case when voiceserver = 1 then keydescription else null end) as 'key1',

max(case when voiceserver = 2 then keydescription else null end) as 'key2',

max(case when voiceserver = 3 then keydescription else null end) as 'key3',

max(case when voiceserver = 4 then keydescription else null end) as 'key4',

max(case when voiceserver = 5 then keydescription else null end) as 'key5',

max(case when voiceserver = 6 then keydescription else null end) as 'key6',

max(case when voiceserver = 7 then keydescription else null end) as 'key7',

max(case when voiceserver = 8 then keydescription else null end) as 'key8',

max(case when voiceserver = 9 then keydescription else null end) as 'key9',

max(case when voiceserver = 10 then keydescription else null end) as 'key10'

from listup

group by listup.nodenumber as node, listup.station as extension

order by listup.nodenumber, listup.station

null優於零長度字串.

標籤:mysql,sql,pivot

mysql 展平各列 MYSQL 展平表查詢

我對下面的查詢有一些問題,我不確定如何修改它以給我所需的輸出,詳情如下 select listup.nodenumber as node,listup.station as extension,case when voiceserver 1 then keydescription else end ...

sql 陣列三 展平陣列

展平陣列 如需將 array 轉換為一組行 即執行展平操作 請使用 unnest 運算子。unnest 獲取乙個 array,然後返回乙個表,array 中的每個元素均佔該錶的一行。由於 unnest 破壞了 array 元素的順序,您可能需要恢復表中的順序。為此,請使用可選的 with offse...

Mesh引數化方法 Mesh展平

mesh引數化或者mesh展平是圖形學裡面廣泛用於製作貼圖的乙個步驟,通常英文稱之為mesh parameterization,也被通俗的稱為mesh flattenning。基本概念是乙個三維的離散網格對映到二維平面網格的過程。為了保證後續應用的有效性,網格的引數化通常需要滿足一些特定的性質,如三...