问题描述 投票:0回答:0

Bought_list

是有列表。
    Official_All
  • 中的所有内容都需要加倍。
    从我能够说的是,问题是Rebuild_stuff中的某些部分至少不是其他两个列表中的一个,因此它们正在返回,它们正在弄乱方程式。我尝试了一个
  • NULL
  • ISNULL
    ,但似乎都没有起作用。
    COALESCE
    当所有表都有零件时,返回值,并且“ have”列表的总和小于“所需”列表的列表。但是,如果“拥有”列表没有零件,因此数量为null,则不会返回值。
    注:最初的QTYS不在加入中,我在试图让事情工作时添加了这些QTY。
    
    简化的示例:
表:



Blitemno

partname
Colorname

Qty

1

Black
423purple34 gearshift1表(注意:此表中的所有QTY都需要加倍)BlitemnopartnamecolornameQty1轮 Black
window clear 5
2

2

window
clear13座 1Blitemno windowclear14
purple
表:
partname colorname Bought_qty
2
gearshift

1

应该返回此结果集:BlitemnopartnamecolornameSTILL_NEDED2clearpurple1
window
2 3

Instead它返回以下内容:STILL_NEDED windowclear2通过创建一个工作示例最重要的是:
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

在官方_ALL之前拥有一个不够的,您必须在可能错过条目的the table之前宣布左派 不要条件to to toRebuild_Stuff 添加此条件意味着“如果我需要4个轮子,我会忽略我在官方仓库中购买了2个车轮和1套2轮,我会等到我购买了4个轮子或2套架子上的2套架子“Official_All而不是合并总和 好的,Bought_List使用2个值,但是现在尝试处理3个来源...总的来说,这一切都使您的SQL过度复杂化(这很难理解您的含义)avoid 当一个简单的合并更直观地表达没有条目意味着0项给出:
coalesce个体s
Left Join
Left

sql sql-server null left-join
© www.soinside.com 2019 - 2025. All rights reserved.