Как вернуть значения из двух таблиц в SQL Server? - PullRequest
0 голосов
/ 12 июня 2019

Мне нужно написать 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 голосов
/ 12 июня 2019

Вы должны агрегировать по биржевому коду и client:

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 здесь.Если один / оба из этих столбцов являются текстовыми, я бы предложил сначала преобразовать эти столбцы в числовые, а затем продолжить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...