主表为 t_ICItemCore
物料ID 物料代码 物料名称 规格型号
FItemID FNumber FName FModel第2张表 t_ICItemBase
物料ID 安全库存
FItemID FSecInv第3张表 ICInventory
物料ID 实际库存
FItemID FQty现在我用下面的SQL语句查询
SELECT t_ICItemCore.FNumber AS 物料代码,
t_ICItemCore.FName AS 物料名称,
t_ICItemCore.FModel AS 规格型号,
t_ICItemBase.FSecInv AS 安全库存,
SUM(ICInventory.FQty) as 实际库存,
SUM(ICInventory.FQty)-convert(float,t_ICItemBase.FSecInv) As 差别
FROM t_ICItemCore
RIGHT OUTER JOIN t_ICItemBase ON t_ICItemCore.FItemID = t_ICItemBase.FItemID
LEFT OUTER JOIN ICInventory ON t_ICItemBase.FItemID = ICInventory.FItemID
where t_ICItemCore.FNumberlike '3%'
group by t_ICItemCore.FItemID,t_ICItemCore.FModel,t_ICItemCore.FName,t_ICItemCore.FNumber,t_ICItemBase.FSecInv
having t_ICItemBase.FSecInv >0 and SUM(ICInventory.FQty) <=t_ICItemBase.FSecInv
order by 物料代码这个语句查询的是通过公用的FItemID查询主表t_ICItemCore 中的所有以 物料代码'3'开头的实际库存低于安全库存的数据(前提条件是安全库存大于0).这条语句查询的结果没有任何问题.
问题在下面:
我所查询的主表t_ICItemCore中很多数据并没有实际库存,也就是说只有一部分数据可以在表t_ICItemBase查询到实际库存
比如某物料代码 3.001.009 数据如下:
物料ID 物料代码 物料名称 规格型号 安全库存 实际库存 差别
2009 3.001.009 流感 H1N1 100 null空(什么都不显示) ( 空)
如果按照上面的SQL语句查询,就查不到这条数据,
原因是因为 3.001.009 物料的实际库存为空(什么都没有,在实际库存t_ICItemBase表中找不到物料ID为2009的这条数据)
但我想查询 所有物料代码'3'开头的实际库存低于安全库存的数据
(其中没有实际库存的也要查询出来,没有实际库存也应该当成低于安全库存!)
不知道这条SQL语句应该怎么写?
物料ID 物料代码 物料名称 规格型号
FItemID FNumber FName FModel第2张表 t_ICItemBase
物料ID 安全库存
FItemID FSecInv第3张表 ICInventory
物料ID 实际库存
FItemID FQty现在我用下面的SQL语句查询
SELECT t_ICItemCore.FNumber AS 物料代码,
t_ICItemCore.FName AS 物料名称,
t_ICItemCore.FModel AS 规格型号,
t_ICItemBase.FSecInv AS 安全库存,
SUM(ICInventory.FQty) as 实际库存,
SUM(ICInventory.FQty)-convert(float,t_ICItemBase.FSecInv) As 差别
FROM t_ICItemCore
RIGHT OUTER JOIN t_ICItemBase ON t_ICItemCore.FItemID = t_ICItemBase.FItemID
LEFT OUTER JOIN ICInventory ON t_ICItemBase.FItemID = ICInventory.FItemID
where t_ICItemCore.FNumberlike '3%'
group by t_ICItemCore.FItemID,t_ICItemCore.FModel,t_ICItemCore.FName,t_ICItemCore.FNumber,t_ICItemBase.FSecInv
having t_ICItemBase.FSecInv >0 and SUM(ICInventory.FQty) <=t_ICItemBase.FSecInv
order by 物料代码这个语句查询的是通过公用的FItemID查询主表t_ICItemCore 中的所有以 物料代码'3'开头的实际库存低于安全库存的数据(前提条件是安全库存大于0).这条语句查询的结果没有任何问题.
问题在下面:
我所查询的主表t_ICItemCore中很多数据并没有实际库存,也就是说只有一部分数据可以在表t_ICItemBase查询到实际库存
比如某物料代码 3.001.009 数据如下:
物料ID 物料代码 物料名称 规格型号 安全库存 实际库存 差别
2009 3.001.009 流感 H1N1 100 null空(什么都不显示) ( 空)
如果按照上面的SQL语句查询,就查不到这条数据,
原因是因为 3.001.009 物料的实际库存为空(什么都没有,在实际库存t_ICItemBase表中找不到物料ID为2009的这条数据)
但我想查询 所有物料代码'3'开头的实际库存低于安全库存的数据
(其中没有实际库存的也要查询出来,没有实际库存也应该当成低于安全库存!)
不知道这条SQL语句应该怎么写?
解决方案 »
- 添加了URL重写后 日历控件的上一月下一月显示错误
- C# 代码优化
- 循环dr到tabe里 一行两个 怎么写
- 请问一下时候在.net2005里面把CheckForIllegalCrossThreadCall置为False会有什么影响吗?比如内存错误或者Win32exception?
- 推荐一个能用web下画树型图的组件,分都给他了
- TreeView提交后怎样防止刷新,百分相送!请高手帮忙!
- 请各位大虾帮忙~ 可否通过类名的字符串来动态创建某各类,或者动态的引用类的某个属性???
- ASP.NET 2.0 中的Login等一系列控件,如何能看到源码?
- C#窗体按钮怎么发送TL1协议的指令?
- 关于水晶报表,为什么我预览出来的内容跟查出来的内容是两样的呀,帮忙呀!
- 谁知道通过mysql生成 C#实体类的工具?
- C#模拟网站登陆
在实际库存t_ICItemBase表中找不到物料ID为2009的这条数据)
就是说在主表t_ICItemCore中 代码为3.001.009 的这条数据在 ]
实际库存t_ICItemBase表中根本没有数据
但我又想把他和低于安全库存的的数据一起查找出来
没有实际库存也应该当成低于安全库存!
t_ICItemCore.FName AS 物料名称,
t_ICItemCore.FModel AS 规格型号,
t_ICItemBase.FSecInv AS 安全库存,
isnull(SUM(ICInventory.FQty),0) as 实际库存,
isnull(SUM(ICInventory.FQty),0)-convert(float,t_ICItemBase.FSecInv) As 差别
FROM t_ICItemCore
RIGHT OUTER JOIN t_ICItemBase ON t_ICItemCore.FItemID = t_ICItemBase.FItemID
LEFT OUTER JOIN ICInventory ON t_ICItemBase.FItemID = ICInventory.FItemID
where t_ICItemCore.FNumberlike '3%'
group by t_ICItemCore.FItemID,t_ICItemCore.FModel,t_ICItemCore.FName,t_ICItemCore.FNumber,t_ICItemBase.FSecInv
having t_ICItemBase.FSecInv >0 and isnull(SUM(ICInventory.FQty),0) <=t_ICItemBase.FSecInv
order by 物料代码
ISNULL(SUM(ICInventory.FQty),0) as 实际库存 后面条件改成这样!
and ISNULL(SUM(ICInventory.FQty),0) <=t_ICItemBase.FSecInv
主表 t_ICItemCore 中代码为3.001.009 的这条数据 在 实际库存 ICInventory.FQty 根本没有数据!
加 is null 可以查询??
然后用ISNULL()设置成0;
加 is null 可以查询??
用外连接LEFT JOIN OR RIGHT JOIN
然后用ISNULL()设置成0;
怎么设置????????????
isnull(SUM(ICInventory.FQty),0)