标题:where 后面如何用条件判断语句?
只看楼主
pxr
Rank: 2
等 级:等待验证会员
帖 子:32
专家分:69
注 册:2011-10-17
结帖率:33.33%
已结贴  问题点数:20 回复次数:4 
where 后面如何用条件判断语句?
set nocount ON
select MAX( b.FDate) as FDate2,a.FOrderInterID,a.FItemID
into #ta01
from ICStockBillEntry a
left join ICStockBill b on a.FInterID =b.FInterID
where b.FCancellation =0
group by a.FOrderInterID,a.FItemID
select b.FDate as 制单日期,b.FBillNo as 编号,
       case b.FStatus when 0 then '未审核' when 3 then '关闭' else '审核' end as 状态,
       case a.FMrpClosed  when 0 then '未关闭' else '关闭' end as 行状态,
       c.FNumber as 供应商代码,c.FName as 供应商名称,d.FNumber as 物料代码,d.FName as 物料名称,d.FModel as 物料规格,e.FNumber as 单位,
       a.FQty as 采购订单数量,a.FStockQty as 入库数量,欠采购订单数量=a.FStockQty-a.FQty,a.FDate as 交货日期,g.FDate as 申请日期,
       h.FDate2 as 最后进料日期,
       case when h.FDate2 > a.FDate then '托期' when h.FDate2 < a.FDate then '提前' else '准时' end as 交期达成状况,
       提前托期天数=DATEDIFF(DAY,h.FDate2,a.FDate)
into #ta02
from POOrderEntry a        /*采购订单表体*/
left join POOrder b on a.FInterID = b.FInterID     /*采购订单表头*/
left join t_Supplier c on b.FSupplyID =c.FItemID    /*供应商表*/
left join t_ICItem d on a.FItemID =d.FItemID     /*产品表*/
left join t_MeasureUnit e on a.FUnitID =e.FMeasureUnitID   /*计量单位表*/
left join PORequestEntry f on a.FSourceInterId =f.FInterID  /*采购申请单表体*/
left join PORequest g on f.FInterID =g.FInterID    /*采购申请单表头*/
left join #ta01 h on a.FInterID =h.FOrderInterID   /**外购入库-最近时间*/
where b.FCancellation =0 and a.FSourceEntryID =f.FEntryID and g.FCancellation =0 and a.FItemID =h.FItemID
and a.FDate >= '********'
and a.FDate <= '########'
and c.FNumber like '%@SuppNo@%'
and c.FName like '%@SuppName@%'
and b.FBillNo like '%*FBillNoCommon*%'
AND d.FNumber like '%@@ItemNumber@@%'
and d.FName like '%@ItemName@%'
order by b.FDate asc,b.FBillNo asc
select 序号=IDENTITY (int,1,1), * into #ta03 from #ta02
select * from #ta03
drop table #ta01
drop table #ta02
drop table #ta03
----------------------------------------------------------------------------
以上是自定义报表,已符合采购部申请的需求。但有一点就是不好用,请各位指导:
and a.FDate >= '********'  --起始日期
and a.FDate <= '########'  --截止日期
一定要录入这2个日期后面的条件才起作用,反之若不录入日期则查询不到任务数据。
我有这个想法,就是实现不了:
若“起始日期”是 NULL(不录入内容),则是'1900-01-01 00:00:00.000'
若“截止日期”是 NULL(不录入内容),,则是'9999-01-01 00:00:00.000'
这样就可达到效果了,请各位指导



[ 本帖最后由 pxr 于 2011-12-15 21:00 编辑 ]
搜索更多相关主题的帖子: 如何 where 供应商 审核 
2011-12-15 20:55
png
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:126
专家分:880
注 册:2010-10-6
得分:20 
可参照另一问题斑主提供的建议-

编程论坛 → 数据库技术 → 『 SQL Server论坛 』 → sql 表联接的后的运算问题。
2011-12-16 19:56
pxr
Rank: 2
等 级:等待验证会员
帖 子:32
专家分:69
注 册:2011-10-17
得分:0 
百忙之中打扰,非常感谢您的指导。

我是以from POOrderEntry a 为基本,用 inner join 代替left join 执行的结果是不一样的。

若有时间,请再指导一下,非常感谢。

懒惰是一种上瘾的毒药,它既毒害人的肉体,也毒害人的心灵。
2011-12-16 21:05
pxr
Rank: 2
等 级:等待验证会员
帖 子:32
专家分:69
注 册:2011-10-17
得分:0 
二楼 png 非常感谢的帮忙,你的指引,现已完成。

懒惰是一种上瘾的毒药,它既毒害人的肉体,也毒害人的心灵。
2011-12-17 08:08
佳L
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:19
帖 子:1404
专家分:3485
注 册:2011-12-11
得分:0 
哇·········好复杂啊,有些还看不懂。

Dreams  will   come  true  ,if   you    hold   on  !
2011-12-23 19:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-357854-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.307772 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved