SQL行轉列(case when then )

首先看我準備一張數據表(這是做一個數據測試的表,就相當於它們,一天打好幾場球)

沒錯,就需要得到箭頭指向的數據表,從數據表結構看出,應該會用到sum加和函數,

同時還會用到分組函數,不同日期的分組

 select distinct Date,
 sum(case Result when '勝利' then 1 else 0 end)as '勝利', //當判斷爲勝利的時候1 不是當然是0 sum+0=sum
 sum(case Result when ''    then  1 else 0 end)as ''
 from Game group by date //給日期分組
//話語來解釋:找到 Result 當爲 '勝利' 表示 1 反之 表示 0 end(結束 有點像if else 的感覺)

上面是一個例子。下面看一下 case when 的語法

關於Case when 主要有兩種語法的用法

複製代碼
//----------ome-------------------------------------
case 字段
         when '子段值' then '表示的結果值'
          when '字段2' then '表示的結果值2 '
       else '其他' end  //---------這種和swtic類似
//----------two-------------------------------------------
case when sex='1' then ''
         when sex='0' then ''
else '其他' end
複製代碼

以上兩種方式都可以實現相同的功能!

case when 字段 用法:

下面用 case 字段 when 用法

//下面插入代碼:

/****** Script for SelectTopNRows command from SSMS ******/
SELECT [ID]
,[Name]
,[SerialNumber]
,[Qty],(case when 0<Qty and Qty<=2000 then 'C等級'
when 2000<Qty and Qty<=3000 then 'B等級'
else
'超級A'end)as 等級
FROM [RTest].[dbo].[Produc]
//--------------------------------------------------------------------------
SELECT [ID]
,[Name]
,[SerialNumber]
,[Qty],case Name when '三星XXJ' then '韓國'
when '蘋果4' then '美國'
when '蘋果5' then '美國'
when 'wphone8' then '美國'
when '宏基' then '中國臺灣'
when '聯想' then '中國大陸'
else
'山寨'
end as '地區'
FROM [RTest].[dbo].[Produc]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章