为什么左连接SQL查询结果在MS Access数据库中不匹配?也许我写的SQL代码有问题?
因此,如果有答案,那么我不想使用 MS Access 中的函数,因为我想使用 VB.Net 的 SQL。
请指导我。
谢谢
桌子
StocksinDetail
没有 | Invno | 代码产品 | 条形码 | 颜色代码 | 尺寸 | 颜色名称 | 数量 |
---|---|---|---|---|---|---|---|
1 | ITO-00004 | 测试1000 | 03-22164010 | - | - | - | 50 |
1 | ITO-00001 | 测试1000 | 03-22164010 | - | S | - | 50 |
2 | ITO-00001 | 测试1000 | 03-22164010 | BHTF001 | XL | 普提赫 | 50 |
3 | ITO-00001 | 测试1000 | 03-22164010 | BHTF002 | M | - | 50 |
4 | ITO-00004 | 测试1001 | 03-22164010 | BHTF001 | - | 普提赫 | 50 |
1 | ITO-00005 | 测试1000 | 03-22164010 | - | - | - | 50 |
桌子:
StocksoutDetail
没有 | Invno | 代码产品 | 条形码 | 颜色代码 | 尺寸 | 颜色名称 | 数量 |
---|---|---|---|---|---|---|---|
1 | ITO-00001 | 测试1000 | 03-22164010 | - | S | - | 1 |
2 | ITO-00001 | 测试1000 | 03-22164010 | BHTF001 | XL | 普提赫 | 1 |
桌子
Stocksfinal
代码产品 | 条形码 | 颜色代码 | 尺寸 | 颜色名称 | 数量 |
---|---|---|---|---|---|
测试1000 | 03-22164010 | - | - | - | 50 |
测试1000 | 03-22164010 | - | - | - | 50 |
测试1000 | 03-22164010 | - | S | - | 50 |
测试1000 | 03-22164010 | BHTF001 | XL | 普提赫 | 50 |
测试1000 | 03-22164010 | BHTF002 | M | - | 50 |
测试1001 | 03-22164010 | BHTF001 | - | 普提赫 | 50 |
想要的结果
代码产品 | 条形码 | 颜色代码 | 尺寸 | 颜色名称 | 数量 |
---|---|---|---|---|---|
测试1000 | 03-22164010 | - | - | - | 100 |
测试1000 | 03-22164010 | - | S | - | 50 |
测试1000 | 03-22164010 | BHTF001 | XL | 普提赫 | 50 |
测试1000 | 03-22164010 | BHTF002 | M | - | 50 |
测试1001 | 03-22164010 | BHTF001 | - | 普提赫 | 50 |
SELECT
t1.CodeProduct, t1.Barcode, t1.Colorcode, t1.Size,
t1.ColorName,
IIf(IsNull(t1.Qty),'0',t1.Qty)-IIf(IsNull(t2.Qty),'0',t2.Qty) AS QTY_STOCK,
t1.Qty AS QTY_STOCKIN, t2.Qty AS QTY_STOCKOUT
FROM
StocksinDetail AS t1
LEFT JOIN
StocksoutDetail AS t2 ON (t1.Size = t2.Size)
AND (t1.Colorcode = t2.Colorcode)
AND (t1.Barcode = t2.Barcode)
AND (t1.CodeProduct = t2.CodeProduct);
构建每个明细表的聚合查询,然后连接这些查询。
考虑:
查询1:SumIN
SELECT CodeProduct, Barcode, Colorcode, Colorname, Size, Sum(Qty) AS SumINQty
FROM StocksinDetail
GROUP BY CodeProduct, Barcode, Colorcode, Colorname, Size;
查询2:SumOUT
SELECT CodeProduct, Barcode, Colorcode, Size, Sum(Qty) AS SumOUTQty
FROM StocksoutDetail
GROUP BY CodeProduct, Barcode, Colorcode, Size;
查询3:
SELECT SumIN.*, SumOUT.SumOUTQty
FROM SumIN LEFT JOIN SumOUT ON (SumIN.Size = SumOUT.Size) AND (SumIN.Colorcode = SumOUT.Colorcode) AND (SumIN.Barcode = SumOUT.Barcode) AND (SumIN.CodeProduct = SumOUT.CodeProduct);
代码产品 | 条形码 | 颜色代码 | 颜色名称 | 尺寸 | 总INQty | 总输出数量 |
---|---|---|---|---|---|---|
测试1000 | 03-22164010 | - | - | - | 100 | |
测试1000 | 03-22164010 | - | - | S | 50 | 1 |
测试1000 | 03-22164010 | BHTF001 | 普提赫 | XL | 50 | 1 |
测试1000 | 03-22164010 | BHTF002 | - | M | 50 | |
测试1001 | 03-22164010 | BHTF001 | 普提赫 | - | 50 |