Структура таблицы:
#IN
(
REFNUM NVARCHAR(5),
QUANTITY INT,
BIRTH DATE,
WH NVARCHAR(10),
BIN NVARCHAR(10),
WEEK INT,
DAY INT
)
#OUT
(
REFNUM NVARCHAR(5),
QUANTITY INT,
BIRTH DATE,
WH NVARCHAR(10),
BIN NVARCHAR(10),
WEEK INT,
DAY INT
)
#TRANSFER
(
REFNUM NVARCHAR(5),
QUANTITY INT,
BIRTH DATE,
WH NVARCHAR(10),
BIN NVARCHAR(10),
OUTWH NVARCHAR(10),
INBIN NVARCHAR(10),
WEEK INT,
DAY INT
)
(Insert test data)
Insert into #IN (REFNUM, QUANTITY, BIRTH, WH, BIN) VALUES ('0001', 100, '2019.01.29', 'A01', 'A01')
Insert into #IN (REFNUM, QUANTITY, BIRTH, WH, BIN) VALUES ('0002', 100, '2019.01.29', 'A01', 'A02')
Insert into #IN (REFNUM, QUANTITY, BIRTH, WH, BIN) VALUES ('0003', 100, '2019.01.29', 'A01', 'A03')
Insert into #IN (REFNUM, QUANTITY, BIRTH, WH, BIN) VALUES ('0004', 100, '2019.01.29', 'A01', 'A04')
Insert into #OUT (REFNUM, QUANTITY, BIRTH, WH, BIN) VALUES ('0001', 10, '2019.01.29', 'A01', 'A01')
Insert into #OUT (REFNUM, QUANTITY, BIRTH, WH, BIN) VALUES ('0001', 10, '2019.01.29', 'A01', 'A01')
Insert into #OUT (REFNUM, QUANTITY, BIRTH, WH, BIN) VALUES ('0002', 10, '2019.01.29', 'A01', 'A02')
Insert into #OUT (REFNUM, QUANTITY, BIRTH, WH, BIN) VALUES ('0002', 10, '2019.01.29', 'A01', 'A02')
Insert into #TRANSFER (REFNUM, QUANTITY, BIRTH, WH, BIN, INWH, INBIN) VALUES ('0001', 10, '2019.01.29', 'A01', 'A01', 'A01', 'A03')
Insert into #TRANSFER (REFNUM, QUANTITY, BIRTH, WH, BIN, INWH, INBIN) VALUES ('0001', 10, '2019.01.29', 'A01', 'A01', 'A01', 'A03')
Insert into #TRANSFER (REFNUM, QUANTITY, BIRTH, WH, BIN, INWH, INBIN) VALUES ('0001', 10, '2019.01.29', 'A01', 'A02', 'A01', 'A04')
Insert into #TRANSFER (REFNUM, QUANTITY, BIRTH, WH, BIN, INWH, INBIN) VALUES ('0001', 10, '2019.01.29', 'A01', 'A02', 'A01', 'A04')
результат, который я хотел бы получить:
REFNUM QUANTITY WH BIN
0001 80 A01 A01
0001 120 A01 A03
0002 80 A01 A02
0002 120 A01 A04
и запрос, который я получил до сих пор:
SELECT
I.REFNUM,
I.WH,
I.BIN,
O.WH,
O.BIN,
T.WH,
T.BIN,
T.REFNUM,
(SELECT QUANTITY FROM #IN I) - ISNULL((SELECT SUM(QUANTITY) FROM #OUT O),0) - ISNULL((SELECT SUM(QUANTITY) FROM #TRANSFER T), 0) AS RESULT
FROM #IN I
RIGHT OUTER JOIN #OUT O
ON I.REFNUM = O.REFNUM
RIGHT OUTER JOIN #TRANSFER T
ON O.REFNUM = T.REFNUM
GROUP BY I.REFNUM, O.REFNUM, T.REFNUM, I.WH, I.BIN, O.WH, O.BIN, T.WH,
T.BIN
ORDER BY I.REFNUM
и я получаю сообщение об ошибке: «Подзапрос возвратил более 1 значения. Это недопустимо, когда подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения."
Каким должен быть мой запрос, чтобы получить желаемый результат, соединив эти 3 таблицы?(Я пытаюсь создать процедуру для получения результата. Поэтому, если проще создать временные таблицы, я тоже могу это сделать)