【问题标题】:How to concatenate the result of columns to a new column如何将列的结果连接到新列
【发布时间】:2022-01-18 10:07:44
【问题描述】:

如何将这些列的结果连接为最终结果:

SELECT 
    ID, 
    CASE
        WHEN t1.SCORE <= 10 THEN '2A'
        WHEN (t1.SCORE > 20 AND t1.SCORE <= 30) THEN '2B'
        WHEN t1.SCORE > 30 THEN '2C'
    END AS Result1,
    CASE
        WHEN t2.POINT <= 10 THEN '2A'
        WHEN (t2.POINT > 20 AND t2.POINT <= 30) THEN '2B'
        WHEN t2.POINT > 30 THEN '2C'
    END AS Result2,

    -- CONCAT(Result1,Result2) AS FinalResult
FROM 
    Table1 t1 
INNER JOIN 
    Table2 t2 ON t2.CustomerID = t1.ID

如何添加这样的表达式:

CONCAT(Result1, Result2) AS FinalResult

【问题讨论】:

  • 你的意思是你想要3列; Result1、Result2 和 CONCAT(Result1,Result2) AS FinalResult。
  • @jarlh 是的,伙计

标签: sql sql-server tsql


【解决方案1】:

将您的查询包装成一个派生表

select Result1, Result2, CONCAT(Result1,Result2) AS FinalResult
from
(
    SELECT ID, 
            CASE
                WHEN t1.SCORE <= 10 THEN '2A'
                WHEN (t1.SCORE > 20 AND t1.SCORE <= 30) THEN '2B'
                WHEN t1.SCORE > 30 THEN '2C'
            END AS Result1,
    
            CASE
                WHEN t2.POINT <= 10 THEN '2A'
                WHEN (t2.POINT > 20 AND t2.POINT <= 30) THEN '2B'
                WHEN t2.POINT > 30 THEN '2C'
            END AS Result2

    FROM Table1 t1 INNER JOIN Table2 t2 ON t2.CustomerID = t1.ID
) dt

【讨论】:

  • 你能解释一下什么是dt吗?
  • dt 只是一个名称/别名。可以在选择中使用,如select dt.Result1, 。有些产品要求为每个派生表指定这样的名称。
猜你喜欢
  • 2014-10-17
  • 2011-11-09
  • 1970-01-01
  • 2023-01-22
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
  • 2023-03-19
  • 2019-04-10
相关资源
最近更新 更多