Bought_list
Official_All
NULL
ISNULL
,但似乎都没有起作用。
COALESCE
当所有表都有零件时,返回值,并且“ have”列表的总和小于“所需”列表的列表。但是,如果“拥有”列表没有零件,因此数量为null,则不会返回值。
注:最初的QTYS不在加入中,我在试图让事情工作时添加了这些QTY。简化的示例:
Blitemnopartname
Colorname
Qty
1
轮 Blackwindow | clear | 5 | |
---|---|---|---|
座 | |||
橙 | |||
2 window
purple | |||
---|---|---|---|
表: | |||
partname | colorname | Bought_qty | |
2 |
橙
1
window | |||
2 | 3 | 座 |
Blitemno | partname | colorname | |
---|---|---|---|
2 | |||
至少,我认为这就是正在发生的事情。我确实知道我在座位的返回中专门看,它不在那里。 | ,我可以找到您查询的一些更正: |
SELECT
Rebuild_Stuff.BLItemNo,
Rebuild_Stuff.PartName,
Rebuild_Stuff.ColorName,
Rebuild_Stuff.qty AS Need_Qty,
COALESCE((Official_All.Qty * 2) + Bought_List.Qty_Bought,
Official_All.Qty,
Bought_List.Qty_Bought) AS Have_Qty,
(Rebuild_Stuff.qty - COALESCE((Official_All.Qty * 2) + Bought_List.Qty_Bought,
Official_All.Qty,
Bought_List.Qty_Bought)) AS Still_Needed
FROM
Rebuild_Stuff
LEFT JOIN
Official_All ON Rebuild_Stuff.BLItemNo = Official_All.BLItemNo
AND Rebuild_Stuff.PartName = Official_All.PartName
AND Rebuild_Stuff.ColorName = Official_All.ColorName
AND Rebuild_Stuff.qty = Official_All.qty
JOIN
Bought_List ON Rebuild_Stuff.BLItemNo = Bought_List.BLItemNo
AND Rebuild_Stuff.PartName = Bought_List.PartName
AND Rebuild_Stuff.ColorName = Bought_List.ColorName
AND Rebuild_Stuff.qty = Bought_List.Qty_Bought
WHERE
(Rebuild_Stuff.qty - ((Official_All.Qty * 2) + Bought_List.Qty_Bought)) > 0
OR (Official_All.Qty IS NULL)
OR Bought_List.Qty_Bought IS NULL
也应该适用于购买的_list
Rebuild_Stuff
添加此条件意味着“如果我需要4个轮子,我会忽略我在官方仓库中购买了2个车轮和1套2轮,我会等到我购买了4个轮子或2套架子上的2套架子“Official_All
而不是合并总和
好的,Bought_List
使用2个值,但是现在尝试处理3个来源...总的来说,这一切都使您的SQL过度复杂化(这很难理解您的含义)avoid
当一个简单的合并更直观地表达没有条目意味着0项给出:coalesce个体 | s | ||
---|---|---|---|
Left Join |
Left