CONCAT 或 APPEND T-SQL 中的两个别名列

Posted

技术标签:

【中文标题】CONCAT 或 APPEND T-SQL 中的两个别名列【英文标题】:CONCAT or APPEND two Alias columns in T-SQL 【发布时间】:2020-05-16 20:46:02 【问题描述】:
SELECT RIGHT(EVAL,2) AS MONTH, EVAL, LEFT(EVAL,4) AS YEAR,
CASE 
    WHEN RIGHT(EVAL,2) < 04 THEN 'Q1'
    WHEN RIGHT(EVAL,2) BETWEEN '04' AND '06' THEN 'Q2'
    WHEN RIGHT(EVAL,2) BETWEEN '06' AND '09' THEN 'Q3'
    WHEN RIGHT(EVAL,2) BETWEEN '09' AND '12' THEN 'Q4'
    END AS QTR
FROM [CREDIT CARD]

目前的输出

   MONTH  EVAL   YEAR   QTR
    07     201807 2018   Q3

预期输出

MONTH EVAL   YEAR   QTR  EVALQTR
07    201807  2018   Q3   2018Q3

EVAL 是格式为 201802、201904 的期间。我将 EVAL 分解为月、年和季度(大小写)。 我希望最终输出为 YEAR+Quarter,即 2019Q2、2018Q1。我无法追加或连接 YEAR 和 QTR 列,因为它们是别名。每次我使用 concat 或 append 函数都会得到 YEAR 和 QTR 是无效列的错误。需要解决方案吗?

【问题讨论】:

【参考方案1】:

这似乎最简单:

select concat(left(eval, 4), 'Q',
              datename(quarter, convert(date, eval + '01'))
             ) as evalqtr

Here 是一个 dbfiddle。

【讨论】:

以上是关于CONCAT 或 APPEND T-SQL 中的两个别名列的主要内容,如果未能解决你的问题,请参考以下文章

pandas数据合并之append与concat

pandas.concat 和 numpy.append 的大型数据集的内存错误

pandas.concat 和 numpy.append 的大型数据集的内存错误

java语言:String类的concat方法与StringBuffer类的append方法区别?内存状态?

Pandas DataFrame concat vs append

python-dataframe的合并(append, merge, concat, join)