Sql server sql查询帮助
我有一个sql,如下所示:Sql server sql查询帮助,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,我有一个sql,如下所示: SELECT ib.branch_no, ib.on_hand, p.weightedav, p.item_code, FROM physical p INNER JOIN item_branch as ib on p.item_code = ib.item_code WHERE ib.on_hand <> 0 此SQL仅返回手头上有0的分支 我试图获取所有分支编号,而不考虑on_hand字段,但
SELECT ib.branch_no,
ib.on_hand,
p.weightedav,
p.item_code,
FROM physical p
INNER JOIN
item_branch as ib on p.item_code = ib.item_code
WHERE ib.on_hand <> 0
此SQL仅返回手头上有0的分支
我试图获取所有分支编号,而不考虑on_hand字段,但仍使用where on_hand子句
去掉on_hand子句可以解决我的问题,但会给我大量不需要的0行
我正在使用SQLServer2008R2
提前感谢您的指导。如果我遗漏了任何信息,请道歉
---------------------整个SQL查询已更新-----------------------
select
ib.branch_no,
p.weighted_av,
p.item_code,
p.x_value,
p.y_value,
ib.on_hand,
p.on_hand as PhysicalOH,
ip.price,
i.item_code as StyleCode,
i.description,
i.cat1,
i.cat2,
i.cat3,
i.cat4,
np.is_style_yn,
si.supplier_code ,
ysv.sort as YSort
from physical as p
left outer JOIN
item_branch as ib on p.item_code = ib.item_code -- and ib.on_hand <> 0
INNER JOIN
item_price as ip on p.item_code = ip.item_code and ip.price_type = 'P1'
INNER JOIN
style_values as sv on p.style_code = sv.style_code and p.x_value = sv.value
INNER JOIN
style_values as ysv on p.style_code = ysv.style_code and p.y_value = ysv.value and ysv.axis = 'Y'
INNER JOIN
ITEM as i on p.style_code = i.item_code
INNER JOIN
NON_PHYSICAL as np ON i.item_code = np.item_code and np.is_style_yn = 1
INNER JOIN
supplier_item as si ON i.item_code = si.item_code and si.pref_supp_no = 1
where --ib.on_hand <> 0 and
sv.axis = 'X' and
i.item_code in
(SELECT ITEM.item_code
FROM ITEM
INNER JOIN
NON_PHYSICAL ON ITEM.item_code = NON_PHYSICAL.item_code
LEFT JOIN
supplier_item ON Item.item_code = supplier_item.item_code and pref_supp_no = 1
WHERE NON_PHYSICAL.is_style_yn = 1 and ITEM.cat1 = 'Verge Sportswear Ltd' )
order by
si.supplier_code,
i.cat4,
i.cat3,
i.cat2,
i.cat1,
sv.sort
试试这个:
SELECT ib.branch_no,
ib.on_hand,
p.weightedav,
p.item_code,
FROM physical p
INNER JOIN
item_branch as ib on (p.item_code = ib.item_code AND ib.on_hand <> 0)
不选择不同的ib.branch\u no,p.weightedav,p.item_代码来自物理p内部JOIN item_分支作为p.item_代码=ib上的ib.item_代码如果您不关心手头的值,并且它唯一的值不是带回那么多重复项,那么您需要做什么?我仍然需要where子句,因为这限制了我的结果,并且只得到手头的值=0的branchno。您正在连接两个表因此,不管怎样,您只会得到手头值不是0的分支。\u no。我在sqlfiddle中进行了尝试,当我删除where条件时,我也得到了所有分支。\u no。您能给我们一个查询演示,以便我们可以看到您的表吗?