【问题标题】:Create column with values from multiple columns in SQL使用 SQL 中多列的值创建列
【发布时间】:2023-03-08 15:10:02
【问题描述】:

我想在包含两列之一的值的表中添加一列,具体取决于哪一行包含该值。

例如,

SELECT
  concat("Selecting Col1 or 2", cast("Col1" OR "Col2" as string)) AS relevantinfo,
FROM table

我不太了解 SQL,而且我知道这个查询不起作用。这甚至可以做到吗?

Col1    Col2
1       
         4
3
4
         5

最终结果

Col1    Col2    relevantinfo
1                1
        4        4
3                3
4                4
        5        5

【问题讨论】:

  • 请与您想要的输出共享示例数据。根据您当前的需要,您可以检查合并功能w3schools.com/sql/func_sqlserver_coalesce.asp
  • @RajatJaiswal 更新了样本数据和所需的输出
  • 您能否在 Col1Col2 中为同一个条目设置一个值?
  • 空格是NULL 的值吗?

标签: sql variables select multiple-columns


【解决方案1】:

您可以使用COALESCE 函数,该函数将返回列表中的第一个非空值。

SELECT col1, col2, COALESCE(col1, col2) AS col3 
FROM t1;

工作示例:http://sqlfiddle.com/#!9/05a83/1

【讨论】:

    【解决方案2】:

    我不会更改表结构来添加可以通过简单查询检索到的冗余信息。

    我宁愿将这种查询与IFNULL/ISNULL(ColumnName, 'Value to use if the col is null') 一起使用:

    --This will work only if there can't be a value in both column at the same time
    --Mysql
    SELECT CONCAT(IFNULL(Col1,''),IFNULL(Col2,'')) as relevantinfo FROM Table
    
    --Sql Server
    SELECT CONCAT(ISNULL(Col1,''),ISNULL(Col2,'')) as relevantinfo FROM Table
    

    【讨论】:

      猜你喜欢
      • 2015-04-06
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 2017-01-20
      • 2018-11-22
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多