這會給你想要的東西:
DECLARE @tbNhap TABLE
(
[id] INT
,[ma] VARCHAR(24)
,[Ten] VARCHAR(24)
,[Dvt] VARCHAR(2)
,[Soluong] INT
,[Batch] VARCHAR(12)
,[Make] VARCHAR(4)
);
DECLARE @tbXuat TABLE
(
[id] INT
,[ma] VARCHAR(24)
,[Ten] VARCHAR(24)
,[Dvt] VARCHAR(2)
,[Soluong] INT
,[Batch] VARCHAR(12)
,[Make] VARCHAR(4)
);
INSERT INTO @tbNhap ([id], [ma], [Ten], [Dvt], [Soluong], [Batch], [Make])
VALUES (1, 11020000000031, 'PTZ5S DN', 'PC', 1200, 3714101711, 'Q209')
,(1, 11020000000031, 'PTZ5S DN', 'PC', 1000, 3217101711, 'R202')
,(1, 11020000000031, 'PTZ5S DN', 'PC', 770, 3217101711, 'C203');
INSERT INTO @tbXuat ([id], [ma], [Ten], [Dvt], [Soluong], [Batch], [Make])
VALUES (1, 11020000000031, 'PTZ5S DN', 'PC', 500, 3217101711, 'R202')
,(1, 11020000000031, 'PTZ5S DN', 'PC', 100, 3217101711, 'C203')
,(1, 11020000000031, 'PTZ5S DN', 'PC', 350, 3217101711, 'C203');
SELECT a.ma
,a.Ten
,a.Dvt
,SUM(ISNULL(a.Soluong,0)) AS Nhap
,MAX(b.Xuat) AS Xuat
,SUM(ISNULL(a.Soluong,0))- MAX(b.Xuat) AS ton
,a.Batch
,a.MaKe
FROM @tbNhap a
LEFT JOIN
(
SELECT ma
,Ten
,Dvt
,Batch
,make
,SUM(ISNULL(Soluong,0)) AS Xuat
FROM @tbXuat
GROUP BY ma
,Ten
,Dvt
,Batch
,make
) b
ON a.ma=b.ma
and a.Batch=b.Batch
and a.Make = b.make
GROUP BY
a.ma
,a.Ten
,a.Dvt
,a.Batch
,a.MaKe
HAVING a.ma LIKE '11020000000031'
ORDER BY
SUBSTRING(CAST(a.Batch AS varchar(10)), 5, 2)
,SUBSTRING(CAST(a.Batch AS varchar(10)), 3, 2) ASC;
請添加文本/代碼 – Tyron78
不使用的圖像預期的結果數據或想要的結果。將其複製/粘貼到格式化文本中。如果需要的話,有些站點可以幫助製作固定的ASCII表格。 https://ozh.github.io/ascii-tables/ –
你的'having'子句應該是'where'子句(在'group by'之前移動它)。具有條款旨在評估彙總值,這些條件不需要這些值。 –