ORACLE表查詢結果轉置(固定列)

2021-09-02 15:45:33 字數 950 閱讀 2083

為乙個可編輯grid,對應這樣的grid資料庫有兩種設計方式,方式1:將資料庫表中的每乙個列和grid中的每乙個列對應;方式2:可編輯部份每乙個單元格做乙個資料庫表的行,既採用縱表的方式儲存資料,當查詢時把縱表結果轉置90度既可。

兩種方式對比:

方式1:和grid中對應一致,對於資料庫設計來說比較直觀,grid中的行和table中的行一一對應,後台**上對於表操作也比較容易;但乙個缺點是表結構比較死板,如果grid中需求改變,要增加更多的可編輯單元格列,則表中需要提前設計一些保留列欄位;

方式2:資料庫表和grid的行對應起來不直觀,但是對於grid的動態列的擴充套件應對起來沒有問題,當需求上要對grid增加欄位時,資料庫表不需改動,只用改動前台**和少量後台**。

tb0表做為模板記錄表,tb1做為分類表,tb2做為可編輯部份單元格表,每個可編輯單元格對應一行.

weightsname對應grid列名,weightsval對應grid單元格值。

查詢所有單元格值sql:

將上面的查詢結果轉置90度,和grid中的行一致:

轉換的原理在於用group by首先對id分組,然後通過decode方法對weightsname進行過濾,對於sum函式,只是為了和group by配合,這裡換成max,min也是無所謂的,畢竟,只是對sum(1)、max(1)、min(1)都是1。

Oracle 行列轉置

兩種簡單的行列轉置 1 固定列數的行列轉換 如student subject grade student1 語文 80 student1 數學 70 student1 英語 60 student2 語文 90 student2 數學 80 student2 英語 100 轉換為 語文 數學 英語 s...

Oracle 行列轉置

兩種簡單的行列轉置 1 固定列數的行列轉換 如student subject grade student1 語文 80 student1 數學 70 student1 英語 60 student2 語文 90 student2 數學 80 student2 英語 100 轉換為 語文 數學 英語 s...

行列轉置(Oracle)

行列轉換包含如下幾種形式 行轉列 列轉行 多列轉換成字串 多行轉換成字串 字串轉換成多列 字串轉換成多行 create table student id number name varchar2 20 course varchar2 20 score number 插入測試資料,如下 結果集如下 s...