當前位置:首頁 » 編程語言 » sql多列轉多行

sql多列轉多行

發布時間: 2024-01-04 06:45:01

㈠ MS SQL SERVER 如何把多列的值 , 變成一列多行 .

MS SQL SERVER沒有這樣的函數可以將多列轉變為多行。
SELECT '小名' AS c1
union all
select '小名' AS c2
union all
select '小名' AS c3
union all
select '小名' AS c4
union all
select '小名' AS c5
union all
select '小名' AS c6
union all
select '小名' AS c8

㈡ Flink SQL 如何實現列轉行

在 SQL 任務裡面經常會遇到一列轉多行的需求,下面就來總結一下在戚凱 Flink SQL 裡面如何實現列轉行的,先來看下面的一個具體案例.

原始數據格式如下:

現在希望得到的數據格式是這樣的:

這是一個典型的列轉行或者一行轉多行的場景,需要將 data 列進行拆分成為多行多列,下面介紹兩種實現方式.

這里在定義 data 欄位類型的時候直接定義為 ARRAY 類型,因為 unnest 函數需要一個數組類型的參數.

自定義表值函數(UDTF),自定義表值函數,將 0 個、1 個或多個標量值作為輸入參數(可以是變長參數)。與自定義的標量函數類似,但與宴賣標量函數不同。表值函數可以返回任意數量的行作為輸出,而不僅是 1 個值。返回的行可以由 1 個或多個列組成。調用一次函數輸出多行或多列數據。必須繼承 TableFunction 基類,並實現一個或者多個名為 eval 的方法, 在使用 UDTF 時,需要帶上 LATERAL TABLE兩個關鍵字.

自定義高祥喚 UDTF 解析的時候,就不需要把 data 欄位定義成 ARRAY 類型了,直接定義成 STRING 類型就可以了,並且這種方式會更加的靈活,比如還需要過濾數據或者更復雜的一些操作時都可以在 UDTF 裡面完成.

unnest 和 自定義 UDTF 函數在使用的時候都有 3 種寫法,前面兩種寫法的效果其實是一樣的,第三種寫法相當於 left join 的用法.區別在於 CROSS JOIN/INNER JOIN: 對於左側表的每一行,右側 UDTF 不輸出,則這一行不輸出.LEFT JOIN: 對於左側表的每一行,右側 UDTF 不輸出,則這一行會輸出,右側 UDTF 欄位為 null

在實際使用的時候如果 unnest 可以滿足需求就直接用 unnest 不需要帶來額外的開發,如果 unnest 函數滿足不了需求,那麼就自定義 UDTF 去完成.

熱點內容
上傳為防盜鏈圖片 發布:2025-01-23 14:57:11 瀏覽:301
伺服器essd什麼意思 發布:2025-01-23 14:51:24 瀏覽:268
spring上傳文件限制 發布:2025-01-23 14:50:30 瀏覽:310
奇亞幣p圖軟體存儲機 發布:2025-01-23 14:38:03 瀏覽:43
linux有用的命令 發布:2025-01-23 14:35:03 瀏覽:681
php顯示縮略圖 發布:2025-01-23 14:22:17 瀏覽:725
安卓哈利波特怎麼更換賬號 發布:2025-01-23 14:16:44 瀏覽:586
中國壓縮包 發布:2025-01-23 14:10:49 瀏覽:499
如果讓電腦訪問到公司伺服器 發布:2025-01-23 14:02:46 瀏覽:686
360瀏覽器腳本 發布:2025-01-23 13:54:42 瀏覽:565