主页>技术社区>编程问答

在SQL Anywhere中使用AS后无法联接两个表

eIT.com.cn 2023/3/15 9:21:28 阅读 4 次

打印


如何解决在SQL Anywhere中使用AS后无法联接两个表?

我对比较陌生(在 Anywhere中)。我试图加入两个表,但总是出现

Anywhere-131:第17行“ left”附近的语法

我的左联接有任何吗?谢谢

(
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,BigUnitCode,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 BYSUM,我们将在最后一步将它们放在最外面的查询中。这是因为您没有在第二个查询中使用SUM,因此很难预见JOIN之后的结果数据集将如何工作。

现在让我们来看第二个查询。 我不确定您为什么在这里使用GROUP BY,因为似乎没有聚合。除非您尝试删除重复项(如),否则无需这样做。由于您尚未提供上下文,因此我假设您不希望这样做。

  (    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,xt.[Comment]            FROM
(SELECT * FROM dmf_dbo.main1WHERE Text_ID = 440168))        ) AS gz                   LEFT JOIN                 (          SELECT          (BigUnitCode +'@'+ BigUnitName) AS Main_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,ho.sub_name





相关内容


热门栏目


特别声明


最新资讯
热讯排行



合作媒体友情链接
生活常识小贴士 软件开发教程 智慧城市生活网 息县通生活服务[移动版] 息县商圈[移动版] 美食菜谱
健康养生 法律知识 科技频道 电影影讯 留学考研学习 星座生肖|解梦说梦




关于我们 | 联系我们 | 合作媒体 | 使用条款 | 隐私权声明 | 版权声明

      Copyright © 2023 eIT.com.cn. All Rights Reserved. 豫ICP备2022012332号