我有張表 欄位是姓名和5門課程
姓名 語文 數學 英語 物理 化學
張三 優 良 優 中 差
李四 優 優 優 優 良
王五 良 良 良 良 優
。。。。。。。。。。。。。。。。。。
現在我有兩個需求1.要選出至少三門或三門以上課程成績一樣的記錄,比如 語數外都是優 或者語外物理化學都是良這樣的記錄
2.還是至少三門或三門以上課程成績一樣的記錄,但語數這兩門課都要在里面
uj5u.com熱心網友回復:
Oracle 可以考慮用unpivot函式,把列轉成行,然后再判斷就方便多了另外說一句,這個表設計得不好,如果再多一部門課程就得改表結構
uj5u.com熱心網友回復:
where 條件一個一個的羅列吧where
(語文=數學 and 語文=英語)
OR
(語文=數學 and 語文=物理)
OR
(語文=數學 and 語文=化學)
OR
(語文=英語 and 語文=物理)
OR
(語文=英語 and 語文=化學)
OR
(語文=物理 and 語文=化學)
or
(數學 =英語 and 數學 =物理)
or
(數學 =英語 and 數學 =化學)
or
(數學 =物理 and 數學 =化學)
or
(英語 =物理and 英語 =化學)
uj5u.com熱心網友回復:
select 姓名, val, count(1)from tab unpivot(val for item in(語文 , 數學 , 英語 , 物理 , 化學))
group by 姓名, val
having count(1) >= 3;
select 姓名, val, count(1), sum(decode(item, '語文', 1, '數學', 1, 0))
from tab unpivot(val for item in(語文 , 數學 , 英語 , 物理 , 化學))
group by nn, val
having sum(decode(item, '語文', 1, '數學', 1, 0)) = 2
and count(1) >= 3
;
uj5u.com熱心網友回復:
問題思路是:列轉行+分組,類似的方法和函式很多。
樓上的方法可以解決問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/65147.html
標籤:開發
上一篇:ODI集成出錯
下一篇:ORA2PG 設定
