首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“多部分标识符无法绑定”错误

“多部分标识符无法绑定”错误
EN

Stack Overflow用户
提问于 2013-01-04 08:45:10
回答 2查看 3.7K关注 0票数 0

我正在使用Server 2005。我知道这个错误:

*不能绑定多部分标识符"ms.MOP_desc“。

我测试了这两个select查询中的每一个,它们各自工作得很好,但是当我合并这些查询时,我得到了错误。有人能告诉我这个查询出了什么问题吗?谢谢。

代码语言:javascript
复制
SELECT SUM(Amount) AS TotalAmount, ms.MOP_desc
FROM 
(
    SELECT SUM(hd.delivery_value) AS Amount, ms.MOP_desc
    FROM TRANSACTION_HEADER AS th 
        INNER JOIN TRANSACTION_DETAIL AS td 
            ON th.transaction_number = td.transaction_number 
        LEFT JOIN hose_delivery hd 
            ON td.delivery_id = hd.delivery_id 
        LEFT JOIN product pr 
            ON pr.product_id = td.product_id
        INNER JOIN MOP_Setting AS ms 
            ON hd.MOP_ID = ms.MOP_ID  
    WHERE hd.delivery_value > 0 
        AND (th.USER_PERIOD_ID IN (13))
        AND (hd.MOP_ID  IN (1))
        AND hd.Cleared_By != '0'
    GROUP BY ms.MOP_desc

    UNION ALL

    SELECT  SUM(td.quantity * td.price_sold) AS Amount, ms.MOP_desc 
    FROM TRANSACTION_HEADER AS th 
        INNER JOIN TRANSACTION_DETAIL AS td 
            ON th.transaction_number = td.transaction_number 
        INNER JOIN MOP_Setting AS ms 
            ON th.MOP_ID = ms.MOP_ID  
    WHERE (th.USER_PERIOD_ID IN (13))
        AND (th.MOP_ID  IN (1))
    GROUP BY ms.MOP_desc
)t
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-04 08:54:16

因为UNIONed查询的结果是一个行集,您已经将别名t给了-- ms别名不再适用:

代码语言:javascript
复制
SELECT SUM(Amount) AS TotalAmount, t.MOP_desc
FROM 
(
...
)t

如果这确实是第二个SUM步骤,那么还需要一个外部GROUP BY子句。

票数 2
EN

Stack Overflow用户

发布于 2013-01-04 08:51:51

当您从子select而不是表中选择时,子select的列名不会暴露给外部select。

使用

代码语言:javascript
复制
SELECT SUM(Amount) AS TotalAmount, mop
FROM 
(
  SELECT SUM(hd.delivery_value) AS Amount, ms.MOP_desc as mop
  FROM TRANSACTION_HEADER AS th 
      INNER JOIN TRANSACTION_DETAIL AS td 
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14153803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档