Как разместить подзапрос в SQL Server 2008 - PullRequest
0 голосов
/ 30 августа 2018

У меня есть основной SQL-запрос, который возвращает количество запаса в датах между ними, и мне также нужно вернуть запас в дату и результат между датами.

Основной запрос:

SELECT 
    TT.TranRId, MAX(TT.TInQty) AS InQty, MAX(TT.TOutQty) AS OutQty
FROM
    TReg TR, TTrans TT
WHERE 
    TR.TRegId = TT.TrRegId
    AND TT.Stid = 2
    AND TR.TransDate BETWEEN '2018-08-25' AND '2018-08-28'
GROUP BY 
    TT.TranRId 
ORDER BY 
    TT.TranRId

Подзапрос:

(SELECT TT.TransRId, (SUM(TT.TInQty) - SUM(TT.TOutQty)) 
FROM TTrans TT, TReg TR
WHERE TR.TransDate <= '2018-08-24' 
  AND TR.TRegId = TT.TrRegId
  AND TT.Stid = 2 GROUP BY TT.TranRId) --AS Stock

Пожалуйста, помогите, где я должен включить свой подзапрос в мой основной запрос

Чтобы получить вывод следующим образом:

TransRId    Stock   InQty   OutQty
----------------------------------
41          700     1       1000
42          800     5       500

1 Ответ

0 голосов
/ 30 августа 2018

Я не уверен, что на 100% слежу за вашим вопросом, если вы просто хотите присоединиться к нему в качестве подзапроса, должна работать приведенная ниже логика.

SELECT TT.TranRId
    ,MAX(TT.TInQty) AS InQty
    ,MAX(TT.TOutQty) AS OutQty
    ,Stock.[Sum]
FROM TReg TR
LEFT JOIN TTrans TT
    ON TR.TRegId = TT.TrRegId
LEFT JOIN (
    SELECT TT.TransRId
        ,(SUM(TT.TInQty) - SUM(TT.TOutQty)) as Sum
    FROM TTrans TT
    LEFT JOIN TReg TR
        ON TR.TRegId = TT.TrRegId
    WHERE TR.TransDate <= '2018-08-24'
        AND TT.Stid = 2
    GROUP BY TT.TranRId
    ) AS Stock
    ON Stock.TranRId = TT.TranRId
WHERE TT.Stid = 2
    AND TR.TransDate BETWEEN '2018-08-25' AND '2018-08-28'
GROUP BY TT.TranRId
ORDER BY TT.TranRId

редактировать: Я заметил tt.TranRId и tt.Tran *** s *** RID, если это не опечатка, ее нужно исправить, если нет, мой ответ не сработает для вас.

Если вам нужны конкретные даты, в том числе дата в логике соединения вместе с идентификатором даст вам соответствующий результат ... не зная вашего набора данных, я не уверен, является ли TranRId уникальным ... извините за это!

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