【问题标题】:Get computed (USD currency conversion) total of each item获取每个项目的计算(美元货币转换)总计
【发布时间】:2018-01-01 03:51:25
【问题描述】:

我有一个获取每个项目总和的查询,但是当我将 SUM(d.AMT) 更改为 (SUM(d.AMT) * e.EXCHANGE_RATE) [USD Amount] 以将总和转换为美元时,我遇到了错误:

选择列表中的“EXCHANGE_RATE.EXCHANGE_RATE”列无效 因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句。

。有人可以解决我的查询吗?谢谢大家!

SELECT d.ITEM_NO, h.ITEM_TYPE, h.ITEM_STATUS, d.CURRENCY,SUM(d.AMT)--(SUM(d.AMT) * e.EXCHANGE_RATE) [USD Amount]
FROM ITEM_HDR h
JOIN ITEM_DET d ON h.ITEM_NO = d.ITEM_NO
JOIN EXCHANGE_RATE e ON d.CURRENCY = e.CURRENCY_FROM
GROUP BY d.ITEM_NO, h.ITEM_TYPE, h.ITEM_STATUS, d.CURRENCY

【问题讨论】:

    标签: sql sql-server-2008 group-by sum aggregate-functions


    【解决方案1】:

    您需要在 之前乘以总和:

    SELECT d.ITEM_NO, h.ITEM_TYPE, h.ITEM_STATUS, d.CURRENCY,
           SUM(d.AMT * e.EXCHANGE_RATE) as [USD Amount]
    FROM ITEM_HDR h JOIN
         ITEM_DET d
         ON h.ITEM_NO = d.ITEM_NO JOIN
         EXCHANGE_RATE e 
         ON d.CURRENCY = e.CURRENCY_FROM
    GROUP BY d.ITEM_NO, h.ITEM_TYPE, h.ITEM_STATUS, d.CURRENCY;
    

    但是,如果您希望每个项目都使用此功能,请简化 SELECTGROUP BY

    SELECT d.ITEM_NO, h.ITEM_TYPE,
           SUM(d.AMT * e.EXCHANGE_RATE) as [USD Amount]
    FROM ITEM_HDR h JOIN
         ITEM_DET d
         ON h.ITEM_NO = d.ITEM_NO JOIN
         EXCHANGE_RATE e 
         ON d.CURRENCY = e.CURRENCY_FROM
    GROUP BY d.ITEM_NO, h.ITEM_TYPE;
    

    【讨论】:

      【解决方案2】:

      改变 (SUM(d.AMT) * e.EXCHANGE_RATE) [USD Amount]SUM(d.AMT * e.EXCHANGE_RATE) AS [USD Amount]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-13
        • 2017-06-16
        • 2012-07-25
        • 1970-01-01
        • 2011-10-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多