Oracle Case end用法
阿新 • • 發佈:2019-01-23
<strong>1.表中有ABC三列,用SQL語句實現,當A列大於B列時選擇A列否則選擇B列,當B列大於C列時選擇B列否則選擇C列。 select (case when a>b then a else b end),(case when b>c then b else c end) from t 2.有一張表T_Scores,記錄比賽成績 Date Name Score 2008-8-8 拜仁 勝 2008-8-9 奇才 勝 2008-8-9 湖人 勝 2008-8-10 拜仁 負 2008-8-8 拜仁 負 2008-8-12 奇才 勝 要求輸出下面的格式: Name 勝 負 拜仁 1 2 湖人 1 0 奇才 2 0 資料和參考答案見備註 注意:在中文字串前加N, 比如N'勝' select Name, { case Score when N'勝' then 1 else 0 end } as 勝, { case Score when N'負' then 1 else 0 end } as 負 from T_Scores 輸出結果: Name 勝 負 拜仁 1 0 奇才 1 0 湖人 1 0 拜仁 0 1 拜仁 0 1 奇才 1 0 select Name, Sum{ case Score when N'勝' then 1 else 0 end } as 勝, Sum{ case Score when N'負' then 1 else 0 end } as 負 from T_Scores group by Name 輸出結果: Name 勝 負 拜仁 1 2 湖人 1 0 奇才 2 0 3. 單號 金額 Rk1 10 Rk2 20 Rk3 -30 Rk4 -10 將上面的表輸出為如下的格式: 單號 收入 支出 Rk1 10 0 Rk2 20 0 Rk3 0 30 Rk4 0 10 select Name, { case Score when N'勝' then 1 else 0 end } as 勝, { case Score when N'負' then 1 else 0 end } as 負 from T_Scores SELECT FNumber, { CASE WHEN FAmount>0 THEN FAmount ELSE 0 END }AS 收入, { CASE WHEN FAmount<0 THEN ABS(FAmount) ELSE 0 END) }AS 支出 FROM SALARY_TABLE;</strong>