在下周公子

  • 首页
  • 域名收藏
  • SEM搜索引擎营销
  • 操作系统
    • 服务器应用
  • 特色专题
    • 跑步运动
  • VPS主机推荐
  • 搜索
在下周公子
三十而立,学以致用
  1. 首页
  2. 服务器应用
  3. SQL Server
  4. 正文

同一个表,用一个字段,根据单据类型判断是否存在

2021年12月1日 1353点热度 0人点赞 0条评论

我所遇到的问题就是,先产生了生产订单,在生成销售订单。现在我需要判定那些生产订单未生成销售订单的列表。并把未生成的订单罗列出来。

我的语句

SELECT
	A.rq,
	A.djh,
	A.khddh 
FROM
	( SELECT rq, djh, khddh FROM e_ck_dj WHERE djlx = '生产订单' AND rq > '2021-10-01' ) AS A 
WHERE
	NOT EXISTS ( SELECT * FROM ( SELECT * FROM e_ck_dj WHERE djlx = '成品销售单' ) AS B WHERE A.khddh = B.khddh )

上述是我的实际代码。其中在khddh为同一个字符字段。另外由于在同一张表内,我这边操作的时候,查询的时候用了AS A和AS B来生成对应的临时表。刚开始直接查没有效果。
另外通过控制NOT 字符可以选择,是显示已经存在的“成品销售单”或者直接过滤。

技巧参考

1、方法一
[sql]select test.no from test1
where EXISTS
(select * from test2 where test1.no=test1.no)[/sql]
2、方法二
a表的id和b表的id相关联。
[sql]select *, case when (select count(*) from b where id = a.id)>0 then 1 else 0 end as flag from a[/sql]
a表和b表的字段和id这两列都一样,才将flag显示为1的话,用下面的查询:
[sql]select *, case when (select count(*) from b where id = a.id and 字段 = a.字段)>0 then 1 else 0 end as flag from a[/sql]


技巧来源

https://zhidao.baidu.com/question/982623548563240539.html

标签: 暂无
最后更新:2021年12月1日

zhou

这个人很懒,什么都没留下

点赞
下一篇 >

COPYRIGHT © 2021 zhoubin.net. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

浙ICP备09065757号-10