我需要执行一个查询,通过该查询可以提取某些文档条目编号以供删除。( Server 2008)第一个查询提供了表OINV的结果。
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桌子上的第二个奥林
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, CommentsOINV样品结果
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 1300ORIN样本结果
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编号的结果,如上面场景的以下结果。
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。
发布于 2012-11-12 13:02:27
您应该知道,ORIN示例中不存在Rita的数据,因此结果中不可能存在Rita的数据。我希望这能解决你的问题:
;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 DocEntryCnhttps://stackoverflow.com/questions/13309500
复制相似问题