我有需要转换为Redshift的MSSQL Server脚本
这是脚本的一部分
OUTER APPLY
(
SELECT MAX(CASE WHEN ctt.codetagid = 7149 THEN Id ELSE 0 END) AS CslId,
MAX(CASE WHEN ctt.codetagid = 9736 THEN Id ELSE 0 END) AS LearnId,
MAX(CASE WHEN ctt.codetagid = 9735 THEN Id ELSE 0 END) AS PMId,
MAX(CASE WHEN ctt.codetagid = 10299 THEN Id ELSE 0 END) AS UpSell
FROM public.billing_codes_custom_tag ctt
WHERE ctt.customcodeid = bcc.id
AND ctt.codetagid IN(7149,9736,9735,10299)
) AS codeLabel
我有错
'(',','、、、、、、、 ORDER,RIGHT,UNION,WHERE或'['预期为'OUTER'
在此行OUTER APPLY
我如何将这些东西转换为Redshift?
答案 0 :(得分:1)
您将使用Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: expecting "all", found 'JOIN' near line 1, column 64 [SELECT child FROM com.example.Family3.domain.Child child FETCH JOIN child.family u WHERE u.id = :userId ]
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:74) ~[hibernate-core-5.3.5.Final.jar:5.3.5.Final]
at org.hibernate.hql.internal.ast.ErrorTracker.throwQueryException(ErrorTracker.java:93) ~[hibernate-core-5.3.5.Final.jar:5.3.5.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:296) ~[hibernate-core-5.3.5.Final.jar:5.3.5.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:188) ~[hibernate-core-5.3.5.Final.jar:5.3.5.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:143) ~[hibernate-core-5.3.5.Final.jar:5.3.5.Final]
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:119) ~[hibernate-core-5.3.5.Final.jar:5.3.5.Final]
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80) ~[hibernate-core-5.3.5.Final.jar:5.3.5.Final]
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:153) ~[hibernate-core-5.3.5.Final.jar:5.3.5.Final]
at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:595) ~[hibernate-core-5.3.5.Final.jar:5.3.5.Final]
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:704) ~[hibernate-core-5.3.5.Final.jar:5.3.5.Final]
... 9 common frames omitted
和聚合:
LEFT JOIN
答案 1 :(得分:0)
因为OUTER APPLY与LEFT JOIN相同
我这样重写它
LEFT JOIN
(
SELECT MAX(CASE WHEN ctt.codetagid = 7149 THEN Id ELSE 0 END) AS CslId,
MAX(CASE WHEN ctt.codetagid = 9736 THEN Id ELSE 0 END) AS LearnId,
MAX(CASE WHEN ctt.codetagid = 9735 THEN Id ELSE 0 END) AS PMId,
MAX(CASE WHEN ctt.codetagid = 10299 THEN Id ELSE 0 END) AS UpSell
FROM public.billing_codes_custom_tag ctt
WHERE ctt.customcodeid = bcc.id
AND ctt.codetagid IN(7149,9736,9735,10299)
) AS codeLabel