91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

惠安县| 郎溪县| 萝北县| 漾濞| 紫金县| 东明县| 新乡县| 自治县| 项城市| 普格县| 汝州市| 兰溪市| 富宁县| 诸暨市| 西安市| 莲花县| 炉霍县| 肃宁县| 龙山县| 营口市| 新泰市| 乳源| 永安市| 仲巴县| 元江| 车致| 英超| 渭南市| 陕西省| 永福县| 济宁市| 施秉县| 仁化县| 枣阳市| 女性| 三原县| 桐柏县| 南昌县| 天峻县| 宜君县| 盐城市|