SELECT Money, Status, uDate, COUNT(*) AS num,
CASE
WHEN status = 1 THEN '入帐'
WHEN info LIKE '%注册域名%' THEN '注册域名'
WHEN info LIKE '%续费域名%' THEN '续费域名'
WHEN info LIKE '%转入域名%' THEN '转入域名'
WHEN info LIKE '%预订域名%' THEN '预订域名'
WHEN info LIKE '%认购域名%' THEN '认购域名'
WHEN info LIKE '%转正域名%' THEN '转正域名'
ELSE '其他'
END
AS t
FROM Account
GROUP BY uDate,
CASE
WHEN status = 1 THEN '入帐'
WHEN info LIKE '%注册域名%' THEN '注册域名'
WHEN info LIKE '%续费域名%' THEN '续费域名'
WHEN info LIKE '%转入域名%' THEN '转入域名'
WHEN info LIKE '%预订域名%' THEN '预订域名'
WHEN info LIKE '%认购域名%' THEN '认购域名'
WHEN info LIKE '%转正域名%' THEN '转正域名'
ELSE '其他'
END
, Money, Status,
Id
ORDER BY uDate DESC, Money
在项目使用中发现了,case并不是想我们程序的的if else一样,一直运行下去,而更类似select case
返回第一个true的结果,所以把入帐排到了前面,否则会产生一个bug