我有一个类似这样的查询:
SELECT SUM(`table`.points) AS total_points FROM table
这将返回类似这样的内容
| **points** |
324
现在我想在它旁边添加另一个结果,具体取决于用户拥有的总点数并显示它。以下是我想要实现的样本
if (total_points >= 50 && < 100) {
//display another column next to the points
another_rows AS total_points + 50
} else if (total_points >= 100 && < 200) {
another_rows AS total_points + 100
} else if (total_points >= 200 && < 300) {
another_rows AS total_points + 200
} else if (total_points >= 300 || 300) {
another_rows AS total_points + 300
} else {
another_rows AS total_points
}
欲望结果:
| **points** | **another_row** |
324 824
答案 0 :(得分:4)
SQL为这些用例准备了一个名为CASE
的构造:
SELECT SUM(points) AS total_points,
SUM(points) +
CASE
WHEN SUM(points) BETWEEN 50 AND 100 THEN 50
WHEN SUM(points) BETWEEN 100 AND 200 THEN 100
WHEN SUM(points) BETWEEN 200 AND 300 THEN 200
WHEN SUM(points) BETWEEN 300 AND 400 THEN 300
ELSE 500
END AS another_row
FROM `table`
答案 1 :(得分:1)
使用CASE WHEN:
select SUM(`table`.points) AS total_points,
CASE SUM(`table`.points) AS total_points
WHEN total_points >= 50 AND total_points < 100 THEN
total_points + 50 AS another_row
WHEN total_points >= 100 AND total_points < 200 THEN
total_points + 100 AS AS another_row
WHEN total_points >= 200 AND total_points < 300 THEN
total_points + 200 AS AS another_row
WHEN total_points >= 300 AND total_points < 400 THEN
total_points + 300 AS AS another_row
ELSE
total_points + 500 AS AS another_row
END CASE
FROM `table`
答案 2 :(得分:0)
SELECT SUM(`table`.points) AS total_points ,Case when (total_points>= 50 &&< 100)
then
another_rows AS total_points + 50
case
when (total_points >= 100 && total_points< 200) then
total_points + 100
case when (total_points >= 200 && total_points< 300)then
total_points + 200
case when (total_points >= 300 && total_points< 400)then
total_points + 300
else
total_points + 500
end as another_rows
From table
答案 3 :(得分:0)
这是你正在寻找的吗?
SELECT
total_points,
CASE
WHEN
total_points > 100
AND
total_points < 200
THEN (total_points + 50)
WHEN
total_points > 200
AND
total_points < 300
THEN (total_points + 100)
END AS another_row
FROM
# from clause
WHERE
# where clause