如何从SQL Server中的两个表返回值?

时间:2019-06-12 10:23:26

标签: sql-server

我需要编写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;

enter image description here

1 个答案:

答案 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.UnitsStockPrice.PriceNZD列均显示为数字,因此我看不到有任何理由使用TRY_CAST。如果这些列中的一/两者都是文本,那么我建议您先将这些列转换为数字,然后再继续。