繁体   English   中英

在SQL中添加临时列,其中值取决于另一列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM