以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]SQL语句合成求助  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=106535)

--  作者:ajie5211
--  发布时间:2017/9/11 10:48:00
--  [求助]SQL语句合成求助

SELE CT     ss.下单日期, ss.销售单号, ss.业务员, ss.品名规格, ss.P数, ss.数量, ss.总线数, ss.出货日期, ss.备注, ss.客户, ss.组别, ss.塑件材料状况, ss.计划生产日,
                      ss.完成日期, ss.五金材料状况, ss.其它备注, ss.延迟信息, ss.是否完成, ss.合同评审单号, ss.原序号, ss.订单状态, ss.判断是否已回交期, ss.入库状态, ss.生管交期,
                      ss.生管备注, ss.操作记录
F RO M         (SELE CT     dbo.tabDIYTable372.F2591 AS 下单日期, dbo.tabDIYTable372.F2592 AS 销售单号, dbo.tabDIYTable372.F2593 AS 业务员,
                                              dbo.tabDIYTable372.F2406 AS 品名规格, dbo.tabDIYTable372.F3325 AS P数, dbo.tabDIYTable372.F2407 AS 数量, dbo.tabDIYTable372.F3326 AS 总线数,
                                              CASE WHEN F3337 = \'\' THEN F2408 ELSE F3337 END AS 出货日期, CASE WHEN F3330 = \'\' THEN F2412 ELSE F3330 END AS 备注,
                                              dbo.tabDIYTable372.F2411 AS 客户, dbo.tabDIYTable372.F3327 AS 组别, dbo.tabDIYTable372.F2549 AS 塑件材料状况,
                                              dbo.tabDIYTable372.F3328 AS 计划生产日, dbo.tabDIYTable372.F3329 AS 完成日期, dbo.tabDIYTable372.F2409 AS 五金材料状况,
                                              dbo.tabDIYTable372.F3420 AS 其它备注, dbo.tabDIYTable372.F4678 AS 延迟信息,
                                              CASE WHEN F2540 = \'已出货\' THEN \'是\' WHEN F2661 = \'已入库\' THEN \'是\' WHEN F3329 = \'\' THEN \'否\' ELSE \'是\' END AS 是否完成,
                                              dbo.tabDIYTable371.F2401 AS 合同评审单号, dbo.tabDIYTable372.F2405 AS 原序号, dbo.tabDIYTable14.F2540 AS 订单状态,
                                              CASE WHEN F3425 <> \'\' THEN 2 WHEN F2646 = \'已结束\' THEN 2 ELSE 1 END AS 判断是否已回交期, dbo.tabDIYTable14.F2661 AS 入库状态,
                                              dbo.tabDIYTable372.F3337 AS 生管交期, dbo.tabDIYTable372.F3330 AS 生管备注, dbo.tabDIYTable372.F4964 AS 操作记录
                       F RO M          dbo.tabDIYTable372 INNER JOIN
                                              dbo.tabDIYTable371 ON dbo.tabDIYTable371.ID = dbo.tabDIYTable372.ID INNER JOIN
                                              dbo.tabDIYTable14 ON dbo.tabDIYTable14.F46 = dbo.tabDIYTable372.F2405 INNER JOIN
                                              dbo.tabDIYTable13 ON dbo.tabDIYTable13.ID = dbo.tabDIYTable14.ID AND dbo.tabDIYTable371.F2401 = dbo.tabDIYTable13.F39
                       UN ION
                       SELE CT     tabDIYTable372_1.F2591 AS 下单日期, tabDIYTable372_1.F2592 AS 销售单号, tabDIYTable372_1.F2593 AS 业务员, tabDIYTable372_1.F2406 AS 品名规格,
                                             tabDIYTable372_1.F3325 AS P数, tabDIYTable372_1.F2407 AS 数量, tabDIYTable372_1.F3326 AS 总线数,
                                             CASE WHEN F3337 = \'\' THEN F2408 ELSE F3337 END AS 出货日期, CASE WHEN F3330 = \'\' THEN F2412 ELSE F3330 END AS 备注,
                                             tabDIYTable372_1.F2411 AS 客户, tabDIYTable372_1.F3327 AS 组别, tabDIYTable372_1.F2549 AS 塑件材料状况, tabDIYTable372_1.F3328 AS 计划生产日,
                                             tabDIYTable372_1.F3329 AS 完成日期, tabDIYTable372_1.F2409 AS 五金材料状况, tabDIYTable372_1.F3420 AS 其它备注,
                                             tabDIYTable372_1.F4678 AS 延迟信息, CASE WHEN F3329 = \'\' THEN \'否\' ELSE \'是\' END AS 是否完成, tabDIYTable371_1.F2401 AS 合同评审单号,
                                             tabDIYTable372_1.F2405 AS 原序号, \'\' AS 订单状态, CASE WHEN F3425 <> \'\' THEN 2 WHEN F2646 = \'已结束\' THEN 2 ELSE 1 END AS 判断是否已回交期,
                                             \'\' AS 入库状态, tabDIYTable372_1.F3337 AS 生管交期, tabDIYTable372_1.F3330 AS 生管备注, tabDIYTable372_1.F4964 AS 操作记录
                       F RO M         dbo.tabDIYTable372 AS tabDIYTable372_1 INNER JOIN
                                             dbo.tabDIYTable371 AS tabDIYTable371_1 ON tabDIYTable371_1.ID = tabDIYTable372_1.ID LEFT OUTER JOIN
                                             dbo.tabDIYTable13 AS tabDIYTable13_2 ON tabDIYTable13_2.F39 = tabDIYTable371_1.F2401
                       WH ERE     (tabDIYTable371_1.F2401 NOT IN
                                                 (SEL ECT     F39
                                                   F RO M          dbo.tabDIYTable13 AS tabDIYTable13_1))) AS ss LEFT OUTER JOIN
                      dbo.订单计划生管信息 ON dbo.订单计划生管信息.合同评审单号 = CAST(ss.合同评审单号 AS nvarchar(100)) AND
                      dbo.订单计划生管信息.原序号 = CAST(ss.原序号 AS int)
WHE RE     ((CAST(ss.合同评审单号 AS nvarchar(100)) + CAST(CAST(ss.原序号 AS int) AS varchar(20))) IN
                          (SELECT     合同评审单号 + CAST(原序号 AS varchar(20)) AS Expr1
                            F RO M          dbo.订单计划生管信息 AS jj)) AND (ss.是否完成 = \'否\')

上面语句去掉红色部分,能出来970条数据,加上红色部分能出来两条数据,我把红色部分的in换成not in 想出来968条数据,但出来0条。请问如何出来这968条,或者用in时,出来的两条数据,显示换一种,换成

SEL ECT     ss.下单日期, ss.销售单号, ss.业务员, ss.品名规格, dbo.订单计划生管信息.P数, ss.数量, dbo.订单计划生管信息.总线数,
                      CASE WHEN dbo.订单计划生管信息.生管交期 = \'\' THEN ss.出货日期 ELSE dbo.订单计划生管信息.生管交期 END AS 出货日期,
                      CASE WHEN dbo.订单计划生管信息.生管备注 IS NULL THEN ss.备注 ELSE dbo.订单计划生管信息.生管备注 END AS 备注, ss.客户, dbo.订单计划生管信息.组别,
                      dbo.订单计划生管信息.塑件材料状况, dbo.订单计划生管信息.计划生产日, dbo.订单计划生管信息.完成日期, dbo.订单计划生管信息.五金材料状况,
                      dbo.订单计划生管信息.其它备注, dbo.订单计划生管信息.延迟信息, ss.是否完成, ss.合同评审单号, ss.原序号, ss.订单状态, ss.判断是否已回交期, ss.入库状态,
                      dbo.订单计划生管信息.生管交期, dbo.订单计划生管信息.生管备注, dbo.订单计划生管信息.操作记录

所想达到的目的就是“订单计划生管信息”中有数据时,按这个数据显示。


--  作者:有点甜
--  发布时间:2017/9/11 10:52:00
--  

where 条件1 and 条件2

 

改成

 

where not (条件1 and 条件2)

 

或者

 

where 条件1取反 or 条件2取反


--  作者:ajie5211
--  发布时间:2017/9/11 15:02:00
--  
以下是引用有点甜在2017/9/11 10:52:00的发言:

where 条件1 and 条件2

 

改成

 

where not (条件1 and 条件2)

 

或者

 

where 条件1取反 or 条件2取反

试了半天还是不行。

where 条件1取反 or 条件2取反

效果出来是970条。
--  作者:有点甜
--  发布时间:2017/9/11 15:05:00
--  

这样肯定没问题

 

where not (条件1 and 条件2)

 

如果有问题,请上传例子测试。

[此贴子已经被作者于2017/9/11 15:05:49编辑过]

--  作者:ajie5211
--  发布时间:2017/9/12 13:32:00
--  
附件数据,请确认,谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:123.rar


--  作者:有点甜
--  发布时间:2017/9/12 15:41:00
--  

汗,空值问题

 

where  not( ((CAST(ss.合同评审单号 AS nvarchar(100)) + CAST(CAST(ss.原序号 AS int) AS varchar(20))) IN
                          (SELECT   isnull(合同评审单号 + CAST(原序号 AS varchar(20)),\'\') AS Expr1
                            FROM          dbo.订单计划生管信息 AS jj)) AND (ss.是否完成 = \'否\'))