我需要编写SQL查询来返回每个客户持有的每只股票的价值(单位×价格)。
我尝试了此查询,但似乎不正确。
SELECT sc.StockCode,
SUM(TRY_CAST(sc.Units AS int) * TRY_CAST(sp.PriceNZD AS decimal(18, 2))) AS Value
FROM StockPrice sp
INNER JOIN StockHoldings sc ON sp.StockCode = sc.StockCode
GROUP BY sc.StockCode
ORDER BY Value DESC;
答案 0 :(得分:0)
您应该按照股票代码和客户进行汇总:
SELECT
sc.ClientID,
sc.StockCode,
SUM(sc.Units * sp.PriceNZD) AS Value
FROM StockPrice sp
INNER JOIN StockHoldings sc
ON sp.StockCode = sc.StockCode
GROUP BY
sc.ClientID,
sc.StockCode
ORDER BY
Value DESC;
鉴于StockHoldings.Units
和StockPrice.PriceNZD
列均显示为数字,因此我看不到有任何理由使用TRY_CAST
。如果这些列中的一/两者都是文本,那么我建议您先将这些列转换为数字,然后再继续。