0

我正在寻找使用 db2 的总和。显然,我收到了 -204 错误,因为我正在尝试使用别名来计算聚合。我不知道如何解决这个问题,希望能得到一些帮助。

SELECT 
    DA.AMOUNT,
    cast(sum(cast(FAT.TRANSACTION_AMOUNT as real)) as integer) as time_used,
    (DA.AMOUNT - sum(FAT.TRANSACTION_AMOUNT)) as time_to_use,
    concat(((sum(FAT.TRANSACTION_AMOUNT)/DA.AMOUNT)*100),'%') AS Percentage_used,
    **sum(time_used)/SUM(DA.AMOUNT) AS Total_Percentage_Used**    

    FROM FACT_Table as FAT
        RIGHT DIM_AWARD DA ON FAT.DIM_ID = DA.DIM_ID
        group by DA.AMOUNT
4

1 回答 1

1

一种方法是在表达式中替换回金额:

SELECT DA.AMOUNT,
       cast(sum(cast(FAT.TRANSACTION_AMOUNT as real)) as integer) as time_used,
       (DA.AMOUNT - sum(FAT.TRANSACTION_AMOUNT)) as time_to_use,
       concat(((sum(FAT.TRANSACTION_AMOUNT)/DA.AMOUNT)*100),'%') AS Percentage_used,
       cast(sum(cast(FAT.TRANSACTION_AMOUNT as real)) as integer)/DA.AMOUNT AS Total_Percentage_Used  
FROM FACT_Table as FAT
     RIGHT DIM_AWARD DA ON FAT.DIM_ID = DA.DIM_ID
group by DA.AMOUNT;

因为你DA.AMOUNT在 中group by,所以不需要它来包装它sum()

如果您担心sum()存在NULL,请使用coalesce(): coalesce(cast(sum(cast(FAT.TRANSACTION_AMOUNT as real)) as integer), 0.0) / DA.AMOUNT AS Total_Percentage_Used

于 2013-09-09T16:34:05.150 回答