我有这样的SQL查询:
SELECT sum(CASE
WHEN user_ad_type = '2' THEN
10
WHEN user_ad_type = '3' THEN
15
WHEN user_ad_telegram != '' OR user_ad_telegram IS NOT NULL THEN
3
WHEN user_ad_website != '' OR user_ad_website IS NOT NULL THEN
3
ELSE
0
END) sum
FROM ads
WHERE user_id = 57
但是它不能正确计算所有项目的总和。看我的桌子: click here to open img。
因此,所有项目的总和应为 21 ,但应为 if you take a look at this img ,您将看到其计数为 15 。
因为 user_ad_type + user_ad_telegram + user_ad_website
不为null或具有特殊值,并且此项的总和为21。出什么事了?
我什至对此进行了测试:
SELECT sum(CASE
WHEN user_ad_type = '2' THEN
10
WHEN user_ad_type = '3' THEN
15
WHEN user_ad_telegram IS NOT NULL THEN
3
WHEN user_ad_website IS NOT NULL THEN
3
ELSE
0
END) sum
FROM ads
WHERE user_id = 57
但是它仍然不算所有物品。
我想检查某些列是否不为空或具有特殊值,然后为其添加价格并获得< strong>该商品的总价。
答案 0 :(得分:0)
我认为您需要单独的金额:
SELECT (SUM(CASE WHEN user_ad_type = '2' THEN 10
WHEN user_ad_type = '3'
THEN 15
END) +
SUM(CASE WHEN user_ad_telegram <> '' THEN 3 ELSE 0 END) + -- handles NULL as well
SUM(CASE WHEN user_ad_website <> '' THEN 3 ELSE 0 END)
) as sum
FROM ads
WHERE user_id = 57;