Select
Case
When a is not null then a
When b is not null then b
When c is not null then c
When d is not null then d
Else ''
End 列名
From Table Name
Case具有兩種格式。簡單Case函數和Case搜索函數。
--簡單Case函數
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函數
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
這兩種方式,可以實現相同的功能。簡單Case函數的寫法相對比較簡潔,但是和Case搜索函數相比,功能方面會有些限制,比如寫判斷式。
還有一個需要注意的問題,Case函數只返回第一個符合條件的值,剩下的Case部分將會被自動忽略。
兩者中可以根據不同的需求來選擇
SELECT @rownum:=@rownum+1 rownum, 姓名,統計個數,最新創建時間
FROM (
SELECT @rownum:=0,
CASE email
WHEN 'bai@163.com' THEN '白'
WHEN 'hei@163.com' THEN '黑'
WHEN 'cai@163.com' THEN '采'
WHEN 'weizhen.li@163.com' THEN '李煒臻'
WHEN 'wangbo@163.com' THEN '王波'
WHEN 'mao@163.com' THEN '毛'
WHEN 'liu@163.com' THEN '劉'
WHEN 'cy@163.com' THEN '采'
ELSE '其他' END 姓名,count(*) 統計個數,MAX(createTime) 最新創建時間
from ali_edas_app
GROUP BY CASE email
WHEN 'bai@163.com' THEN '白'
WHEN 'hei@163.com' THEN '黑'
WHEN 'cai@163.com' THEN '采'
WHEN 'weizhen.li@163.com' THEN '李煒臻'
WHEN 'wangbo@163.com' THEN '王波'
WHEN 'mao@163.com' THEN '毛'
WHEN 'liu@163.com' THEN '劉'
WHEN 'cy@163.com' THEN '采'
ELSE '其他' END
) m