首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询以比较两个表的结果并筛选出某些记录

查询以比较两个表的结果并筛选出某些记录
EN

Stack Overflow用户
提问于 2012-11-09 14:01:57
回答 1查看 929关注 0票数 1

我需要执行一个查询,通过该查询可以提取某些文档条目编号以供删除。( Server 2008)第一个查询提供了表OINV的结果。

代码语言:javascript
复制
SELECT DocEntry AS "DocEntryINV" , Comments, DocTotal
FROM OINV WHERE DocDate BETWEEN '10-27-2012' AND '10-29-2012' AND Comments IS NOT NULL 
ORDER BY DocTotal ASC, Comments

桌子上的第二个奥林

代码语言:javascript
复制
SELECT DocEntry AS "DocEntryCN" , Comments, JrnlMemo, DocTotal
FROM ORIN WHERE DocDate BETWEEN '10-27-2012' AND '10-29-2012' AND Comments IS NOT NULL 
ORDER BY DocTotal ASC, Comments

OINV样品结果

代码语言:javascript
复制
DocEntryINV   JrnlMemo   DocTotal
1             kaka-19        500
3             kaka-19        500
5             kaka-19        500
6             kaka-19        500
7             Rob-23         750
9             Rob-23         750
10            Alex-09        1000
11            Olma-08        1150
12            Paul-17        1250 
13            Paul-17        1250
16            Paul-17        1250
17            Rita-99        1300
19            Rita-99        1300

ORIN样本结果

代码语言:javascript
复制
DocEntryCN    Comments    JrnlMemo      DocTotal
67            reverse     kaka-19       500
69            reverse     kaka-19       500
70            reverse     kaka-19       500
71            reverse     kaka-19       500
74            reverse     kaka-19       500
75            reverse     Rob-23        750
77            reverse     Rob-23        750
78            reverse     Rob-23        750
79            reverse     Rob-23        750
84            reverse     Paul-17       1250
86            reverse     Paul-17       1250
87            reverse     Paul-17       1250

在表OINV中,副本来自一个销售点软件,该软件将发票副本推到ERP数据库表OINV。一项旨在通过创建信用卡使发票作废的程序并不奏效,有时产生的信用票据比发票一开始更多。(发票号为45,000+ )。有时,在需要时,没有为发票副本创建信用票据。

如何使用这两个表创建一个查询,如果ORIN表中存在额外的条目,则可以在该表中反转它们?我需要查询来返回要反转的DocEntryCN编号的结果,如上面场景的以下结果。

代码语言:javascript
复制
DocEntryCN    Comments    JrnlMemo      DocTotal
67            reverse     kaka-19       500
69            reverse     kaka-19       500
75            reverse     Rob-23        750
77            reverse     Rob-23        750
78            reverse     Rob-23        750
84            reverse     Paul-17       1250
90            reverse     Rita-99       1300

注意:注释存储的发票号码是唯一的。如果OINV表中的任何两个注释相同,则意味着存在重复错误。ORIN表中的JrnlMemo字段存储OINV发票号。任何发票重复编号。k,正确数量的信用卡反向应该是k- 1。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-12 13:02:27

您应该知道,ORIN示例中不存在Rita的数据,因此结果中不可能存在Rita的数据。我希望这能解决你的问题:

代码语言:javascript
复制
;with a as
(
select row_number() over(partition by JrnlMemo order by DocEntry) rn,
count(*) over (partition by JrnlMemo) cnt
, DocEntry DocEntryCN, Comments, JrnlMemo, DocTotal from @ORIN
FROM ORIN WHERE DocDate BETWEEN '2012-10-27' AND '2012-10-29' AND Comments IS NOT NULL 
), b as
(
select JrnlMemo, count(*)-2 count 
from oinv
WHERE DocDate BETWEEN '2012-10-27' AND '2012-10-29' AND Comments IS NOT NULL 
group by JrnlMemo
)
select a.DocEntryCn, a.Comments, a.JrnlMemo, a.DocTotal
from a join b on a.cnt > a.rn + b.count and a.JrnlMemo = b.JrnlMemo
order by DocEntryCn
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13309500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档