我在MSSQL服务器上有需要转换为Redshift的脚本
这是其中的一部分
CROSS JOIN (
SELECT MONTH(be.TimeWorkedFrom) AS MONTH,
YEAR(be.TimeWorkedFrom) AS YEAR,
CONCAT(DATEPART(MONTH, be.TimeWorkedFrom),'/',1,'/',DATEPART(YEAR, be.TimeWorkedFrom))AS MonthBilled
FROM BE2_Billing_Entries be
WHERE be.TimeWorkedFrom > '1/1/2015'
AND be.ProviderId = 65277
GROUP BY MONTH(be.TimeWorkedFrom),
YEAR(be.TimeWorkedFrom),
CONCAT(DATEPART(MONTH, be.TimeWorkedFrom),'/',1,'/',DATEPART(YEAR, be.TimeWorkedFrom))
)t
我这样重写它
CROSS JOIN (
SELECT DATE_TRUNC('MONTH',be.timeworkedfrom) AS MONTH,
DATE_TRUNC('YEAR',be.timeworkedfrom) AS YEAR,
CONCAT(DATE_PART('MONTH', be.timeworkedfrom),'/',1,'/',DATE_PART('YEAR', be.timeworkedfrom))AS MonthBilled
FROM billing_entries be
WHERE be.timeworkedfrom > '1/1/2015'
AND be.providerid = 65277
GROUP BY DATE_TRUNC('MONTH',be.timeworkedfrom),
DATE_TRUNC('MONTH',be.timeworkedfrom),
CONCAT(DATE_PART('MONTH', be.timeworkedfrom),'/',1,'/',DATE_PART('YEAR', be.timeworkedfrom))
)t
但是现在我得到了错误
[42883] [500310] Amazon无效操作:函数concat(双精度,“未知”,整数,“未知”,双精度)不存在; java.lang.RuntimeException:com.amazon.support.exceptions.ErrorException:Amazon无效操作:函数concat(双精度,“未知”,整数,“未知”,双精度)不存在;
我的问题在哪里?
答案 0 :(得分:1)
使用|| (串联)运算符-redshift支持此运算符或嵌套 concat-供您参考https://docs.aws.amazon.com/redshift/latest/dg/r_concat_op.html
CROSS JOIN (
SELECT DATE_TRUNC('MONTH',be.timeworkedfrom) AS MONTH,
DATE_TRUNC('YEAR',be.timeworkedfrom) AS YEAR,
DATE_PART('MONTH', be.timeworkedfrom)||'/'||1||'/'||DATE_PART('YEAR', be.timeworkedfrom) AS MonthBilled
FROM billing_entries be
WHERE be.timeworkedfrom > '1/1/2015'
AND be.providerid = 65277
GROUP BY DATE_TRUNC('MONTH',be.timeworkedfrom),
DATE_TRUNC('MONTH',be.timeworkedfrom),
DATE_PART('MONTH', be.timeworkedfrom)||'/'||1||'/'||DATE_PART('YEAR', be.timeworkedfrom)