sql - 在 SQL Anywhere 中使用 AS 后无法连接两个表
问题描述
我对 SQL 比较陌生(在 SQL Anywhere 中)。我试图加入两个表,但总是出错
SQL Anywhere 错误 -131:第 17 行“左”附近的语法错误
我的左连接有什么错误吗?谢谢
(
SELECT
Text_ID, Asdate, BigUnitCode AS Big_Code,
(BigUnitCode +'@'+ BigUnitName) as Main_ID, Method, xt.[Comment],
SUM(FIvalue) AS CurrentValue
FROM
(SELECT * FROM dmf_dbo.main1
WHERE Text_ID = 440168) AS xt
GROUP BY
Text_ID, Asdate, BigUnitCode, Method, xt.[Comment], BigUnitName
) AS gz
LEFT JOIN
(SELECT
(BigUnitCode +'@'+ BigUnitName) AS Main_ID, BigDep_code AS group_id,
BigDep_name AS group_name, SmallUnit_code AS sub_id,
SmallUnit_name AS sub_name
FROM
dmf_dbo.main2
WHERE
ASOFDATE = '2020-07-11'
GROUP BY
SmallUnit_code, SmallUnit_name) AS ho ON gz.Main_ID = ho.Main_ID
解决方案
在没有看到您的数据或您的预期输出的情况下有点棘手,所以我对您的输出不承担任何责任,但试试这个。请记住,如果您格式化代码并使用(接近的东西)正确的缩进,通常更容易看到发生了什么。
让我们来看看你的第一个声明。
(
SELECT
Text_ID
,Asdate
,BigUnitCode AS Big_Code
,(BigUnitCode +'@'+ BigUnitName) as Main_ID
,Method
,xt.[Comment]
FROM
(
SELECT * FROM dmf_dbo.main1
WHERE Text_ID = 440168)
)
) AS gz
您会注意到删除了一个放错位置的括号(括号)并删除了GROUP BY
and SUM
,我们将在最后一步将它们放在最外层的查询中。这是因为您没有SUM
在第二个查询中使用,因此很难预测生成的数据集在JOIN
.
现在让我们看看第二个查询。我不确定你为什么在GROUP BY
这里使用,因为似乎没有聚合。除非您尝试删除重复项(如在DISTINCT中),否则无需这样做。由于您没有提供上下文,我假设您不希望这样做。
(
SELECT
(BigUnitCode +'@'+ BigUnitName) AS Main_ID
,BigDep_code AS group_id
,BigDep_name AS group_name
,SmallUnit_code AS sub_id
,SmallUnit_name AS sub_name
FROM
dmf_dbo.main2
WHERE ASOFDATE = '2020-07-11'
) AS ho
现在,让我们把它们放在一起。
SELECT
gz.Text_ID
,gz.Asdate
,gz.Big_Code
,gz.Main_ID
,gz.Method
,gz.Comment
,ho.Main_ID
,ho.group_id
,ho.group_name
,ho.sub_id
,ho.sub_name
,SUM(gz.FIvalue) AS CurrentValue
FROM
(
(SELECT
Text_ID
,Asdate
,BigUnitCode AS Big_Code
,(BigUnitCode +'@'+ BigUnitName) as Main_ID
,Method
,xt.[Comment]
FROM
(
SELECT * FROM dmf_dbo.main1
WHERE Text_ID = 440168)
)
) AS gz
LEFT JOIN
(
SELECT
(BigUnitCode +'@'+ BigUnitName) AS Main_ID
,BigDep_code AS group_id
,BigDep_name AS group_name
,SmallUnit_code AS sub_id
,SmallUnit_name AS sub_name
FROM
dmf_dbo.main2
WHERE ASOFDATE = '2020-07-11'
) AS ho
ON gz.Main_ID = ho.Main_ID
)
GROUP BY
gz.Text_ID
,gz.Asdate
,gz.Big_Code
,gz.Main_ID
,gz.Method
,gz.Comment
,ho.Main_ID
,ho.group_id
,ho.group_name
,ho.sub_id
,ho.sub_name
推荐阅读
- svg - 反应 - 自添加代理以来,公共返回 404 的图像
- javascript - 这是测试 MediaRecorder API 功能的安全方法吗?
- vuejs2 - 如何在挂载的钩子中而不是在单个方法中初始化代码?
- docker - 容器自行退出,无法执行
- c++ - 在 txt 文件中查找最小和最大数字
- flutter - Flutter 在后台生成多个 .xcconfig 文件如何解决?
- sql - 如何在 SQL 中将数字转换为日期?
- assert - 对于 Geb 给出的时候,有没有办法忽略 'then' 中的断言
- arrays - 无论数字位置如何,如何获得每个唯一的数字组合
- r - 从R中的字符串列表中删除停用词