[英]add a temporary column in SQL, where the values depend from another column
我有这张桌子:
ID | name | result |
--------------------
1 | A | 1 |
--------------------
2 | B | 2 |
--------------------
3 | C | 1 |
--------------------
1 | A | 2 |
--------------------
4 | E | 2 |
--------------------
我想在| result |旁边添加一个新的临时列,其中result = 1的值应该是100,而result = 2的值应该是80,所以它应该如下所示:
ID | name | result | NewColumn|
-------------------------------
1 | A | 1 | 100 |
-------------------------------
2 | B | 2 | 80 |
-------------------------------
3 | C | 1 | 100 |
-------------------------------
1 | A | 2 | 80 |
-------------------------------
4 | E | 2 | 80 |
-------------------------------
如何在SQL中查询?
在SELECT
的列列表中使用CASE
表达式 - 如下所示:
SELECT
ID,
name,
result,
CASE
WHEN result = 1 THEN 100
WHEN result = 2 THEN 80
ELSE NULL
END AS NewColumn
FROM YourTable
添加其他WHEN
表达式或根据需要更改ELSE
表达式。
您可以在查询中添加case
语句:
SELECT id, name, result, CASE result WHEN 1 THEN 100 WHEN 2 THEN 80 ELSE NULL END
from my_table
SELECT ID
,name
,result
,NewColumn = CASE WHEN result = 1 THEN 100 WHEN result = 2 THEN 80 END
FROM Table1
由于上面给出的答案也是正确的。 但我会说,如果现有列和新列之间有预定义的关系或逻辑,那么您也可以在没有CASE
下实现这一点。 为所有可能的值编写CASE
是不可能的也不是有效的。
对于您现有的数据。 我可以用它这样的东西
SELECT ID, name, result, (20*(6-result)) as NewColumn
FROM YourTable
这里我假设1=>100
2=>80
3=>60
4=>40
5=>20
。
当然这只是为了理解目的。 您可以根据实际数据创建自己的表达式。
您将在Mysql中使用IF语句
SELECT col1,col2,col3,IF(col3 = 1,'100',IF(col3 = 2,80,''))FROM your_table
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.