根据派生列 sql 查询创建新列?

Making a new column based on a derived column sql query?

所以我有一个名为 TOY_DETAILS 的 table,其中包含 ID、日期、Toy_obje、货币(可以是美元、英镑或欧元)和预算。

现在我想创建一个 sql 查询,它将 return 所有内容以及

  1. 一个以美元为单位的预算的计算列(所以转换率就像 1 英镑 = 1.5 美元和 1 欧元 = 1.2)
  2. 另一个计算列,其中包含以美元为单位的总预算。

我试过的。

SELECT ID, Date,Toy_object, currency, budget, 
CASE currency
WHEN 'GBP' THEN budget*1.5
WHEN 'EUR' THEN budget*1.2
ELSE budget
END AS USD_Value
(SELECT SUM(USD_Value) FROM PROJECT_DETAILS) AS Total_Budget
FROM PROJECT_DETAILS

我的问题是 2)。我希望 Total_Budget 成为列 USD_Value 的总和,但是我无法键入 'SUM(USD_Value)',因为“列不存在”?

提前致谢,

您必须在 SUM:

中重复 CASE 表达式
SELECT ID, Date,Toy_object, currency, budget, 
       CASE currency 
          WHEN 'GBP' THEN budget*1.67 
          WHEN 'EUR' THEN budget*1.3 
       ELSE budget END AS USD_Value,
       SUM(CASE currency 
              WHEN 'GBP' THEN budget*1.67 
              WHEN 'EUR' THEN budget*1.3 
              ELSE budget 
            END) OVER() AS Total_Budget 
FROM PROJECT_DETAILS