Sql server 交叉连接需要帮助吗
我发现以下错误: 信息156,第15级,状态1,第4行 关键字“CROSS”附近的语法不正确 味精156,第15级,状态1,第6行 关键字“CROSS”附近的语法不正确 Msg 156,第15级,状态1,第8行 关键字“CROSS”附近的语法不正确 Msg 156,第15级,状态1,第10行 关键字“CROSS”附近的语法不正确 Msg 102,15级,状态1,第12行 附近的语法不正确Sql server 交叉连接需要帮助吗,sql-server,select,subquery,Sql Server,Select,Subquery,我发现以下错误: 信息156,第15级,状态1,第4行 关键字“CROSS”附近的语法不正确 味精156,第15级,状态1,第6行 关键字“CROSS”附近的语法不正确 Msg 156,第15级,状态1,第8行 关键字“CROSS”附近的语法不正确 Msg 156,第15级,状态1,第10行 关键字“CROSS”附近的语法不正确 Msg 102,15级,状态1,第12行 附近的语法不正确 子查询属于括号。大多数数据库管理系统还需要它们的名称: SELECT * FROM (SELEC
子查询属于括号。大多数数据库管理系统还需要它们的名称:
SELECT *
FROM
(SELECT
SUM(CASE WHEN LOCAL_CCY_AMT < 0 THEN LOCAL_CCY_AMT END) AS DR
FROM
INSIGHTSOURCE.BS.RE_CRF_GL
WHERE
CONSOL_KEY10 = 'CUR'
GROUP BY
Consol_Key10
CROSS JOIN
SELECT
SUM(CASE WHEN LOCAL_CCY_AMT < 0 THEN LOCAL_CCY_AMT END) AS DR
FROM
INSIGHTSOURCE.BS.RE_CRF_GL
WHERE
CONSOL_KEY10 IN ('REG','WCL')
GROUP BY
Consol_Key10
CROSS JOIN
SELECT
SUM(CASE WHEN LOCAL_CCY_AMT < 0 THEN LOCAL_CCY_AMT END) AS DR
FROM
INSIGHTSOURCE.BS.RE_CRF_GL
WHERE
CONSOL_KEY10 IN ('OAM', 'SUB')
GROUP BY
Consol_Key10
CROSS JOIN
SELECT
SUM(CASE WHEN LOCAL_CCY_AMT < 0 THEN LOCAL_CCY_AMT END) AS DR
FROM
INSIGHTSOURCE.BS.RE_CRF_GL
WHERE
CONSOL_KEY10 IN ('DBT', 'LOS')
GROUP BY
Consol_Key10
CROSS JOIN
SELECT
SUM(CASE WHEN LOCAL_CCY_AMT < 0 THEN LOCAL_CCY_AMT END) AS DR
FROM
INSIGHTSOURCE.BS.RE_CRF_GL
WHERE
CONSOL_KEY10 IN ('CHO')
GROUP BY
Consol_Key10
)
对每个子查询使用别名和别名
SELECT *
FROM
(SELECT SUM(CASE WHEN LOCAL_CCY_AMT < 0 THEN LOCAL_CCY_AMT END) AS DR
FROM INSIGHTSOURCE.BS.RE_CRF_GL WHERE CONSOL_KEY10 = 'CUR' GROUP BY Consol_Key10) q1
CROSS JOIN
(SELECT SUM(CASE WHEN LOCAL_CCY_AMT < 0 THEN LOCAL_CCY_AMT END) AS DR
FROM INSIGHTSOURCE.BS.RE_CRF_GL WHERE CONSOL_KEY10 IN ('REG','WCL') GROUP BY Consol_Key10) q2
CROSS JOIN
(SELECT SUM(CASE WHEN LOCAL_CCY_AMT < 0 THEN LOCAL_CCY_AMT END) AS DR
FROM INSIGHTSOURCE.BS.RE_CRF_GL WHERE CONSOL_KEY10 IN ('OAM','SUB') GROUP BY Consol_Key10) q3
CROSS JOIN
(SELECT SUM(CASE WHEN LOCAL_CCY_AMT < 0 THEN LOCAL_CCY_AMT END) AS DR
FROM INSIGHTSOURCE.BS.RE_CRF_GL WHERE CONSOL_KEY10 IN ('DBT','LOS') GROUP BY Consol_Key10) q4
CROSS JOIN
(SELECT SUM(CASE WHEN LOCAL_CCY_AMT < 0 THEN LOCAL_CCY_AMT END) AS DR
FROM INSIGHTSOURCE.BS.RE_CRF_GL WHERE CONSOL_KEY10 IN ('CHO') GROUP BY Consol_Key10) q5;
采取更小的步骤。使用一个交叉联接创建一个小查询。然后进行下一步。您希望输出中有多少列和行?您有5列,全部称为DR,包含各种不同的值。当无法区分每个查询的结果时,您打算如何访问这些数据?我会尝试使用UNION ALL而不是交叉联接。
SELECT * FROM (
(SELECT SUM(CASE WHEN LOCAL_CCY_AMT < 0 THEN LOCAL_CCY_AMT END) AS DR FROM INSIGHTSOURCE.BS.RE_CRF_GL WHERE CONSOL_KEY10 = 'CUR' GROUP BY Consol_Key10) AS t1
CROSS JOIN
(SELECT SUM(CASE WHEN LOCAL_CCY_AMT < 0 THEN LOCAL_CCY_AMT END) AS DR FROM INSIGHTSOURCE.BS.RE_CRF_GL WHERE CONSOL_KEY10 IN ('REG','WCL') GROUP BY Consol_Key10) AS t2
CROSS JOIN
(SELECT SUM(CASE WHEN LOCAL_CCY_AMT < 0 THEN LOCAL_CCY_AMT END) AS DR FROM INSIGHTSOURCE.BS.RE_CRF_GL WHERE CONSOL_KEY10 IN ('OAM','SUB') GROUP BY Consol_Key10) AS t3
CROSS JOIN
(SELECT SUM(CASE WHEN LOCAL_CCY_AMT < 0 THEN LOCAL_CCY_AMT END) AS DR FROM INSIGHTSOURCE.BS.RE_CRF_GL WHERE CONSOL_KEY10 IN ('DBT','LOS') GROUP BY Consol_Key10) AS t4
CROSS JOIN
(SELECT SUM(CASE WHEN LOCAL_CCY_AMT < 0 THEN LOCAL_CCY_AMT END) AS DR FROM INSIGHTSOURCE.BS.RE_CRF_GL WHERE CONSOL_KEY10 IN ('CHO') GROUP BY Consol_Key10) AS t5
)