亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL 如何實現動態的行列轉置

發布時間:2020-08-11 18:45:18 來源:ITPUB博客 閱讀:415 作者:rqgxy 欄目:數據庫

Oracle 和新版 Mysql 里有 pivot 實現行列轉置,但實際處理數據時,會碰到一些更復雜的轉置情況,pivot 也搞不定,比如:

SQL 如何實現動態的行列轉置

想轉置成:

SQL 如何實現動態的行列轉置

這個難點在于事先不知道有多少種收入來源,而且每個人的收入來源種類各不相同。先得計算出種類個數,根據個數動態生成表結構,然后按照順序填充每個人的多個收入數據。

SQL 的計算過程不提倡分步,對集合操作支持的也不徹底,很難應付這種多步驟復雜計算。

如果用集算器的 SPL 語言來處理,就能輕松實現:


A B
1 =connect("db") =A1.query("select * from Income")
2 =B1.group(Name) =A2.max(~.len())
3 =create(Name,${B2.("Source"+string(~)+",Income"+string(~)).concat@c()})
4 for A2 =A4.Name|A4.conj([Source,Income])
5
>A3.record(B4)

A3 格子根據原始數據得到期望數據結構的空表;B4 格子得到每個人要填充入空表的數據。

如果不用復雜計算得到結果列,只是根據某個字段值動態生成列,直接用 pivot 函數就可以;具體的列都不用指定,根據字段值自動生成:
=connect(”mysqlDB”).query(“select * from t”).pivot(g1;g2,f)。

除了動態行列轉置,還有雙向轉置、轉置同時存在列間運算等復雜轉置需求,這些計算用 SPL 都容易編寫出來,參考 《轉置》。

集算器 SPL 是解決 SQL 難題的專業腳本語言,它語法簡單,符合自然思維,是天然分步、層次清晰的面向過程計算語言。它采用與數據庫無關的統一語法,編寫的算法可在數據庫間無縫遷移。它是桌面級計算工具,即裝即用,配置簡單,調試功能完善,可設置斷點、單步執行,每步執行結果都可查看。請參閱 SQL 解題手

當數據不在數據庫里時,SPL 執行復雜計算仍然方便:
=file(“d:/t.csv”).import(;,",").pivot...

SPL能很方便地嵌入到JAVA應用,可參考 《Java 如何調用 SPL 腳本》。

具體使用方法可參考  《如何使用集算器》。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凌云县| 丹江口市| 抚远县| 临城县| 武宣县| 江都市| 凤山县| 灵寿县| 清新县| 舟山市| 明溪县| 萨嘎县| 进贤县| 渝北区| 宜兰市| 密山市| 南召县| 清远市| 罗山县| 湖南省| 会泽县| 万盛区| 扶余县| 平昌县| 新干县| 高邮市| 敖汉旗| 本溪| 习水县| 青岛市| 龙游县| 三河市| 黄浦区| 桃园市| 宁阳县| 陵川县| 勐海县| 丹东市| 巫山县| 盘锦市| 桂阳县|