我必须按如下方式在sql中处理。每个订单都由许多细节行组成。我只需要看一张桌子,TRA99。
Order number TRAN CODE
123 QEE
123 @23
123 ABC
SELECT
ALL OTRIDC, OTCOM#, OTORD#, OTFL50, OTTRND, OTTRT, OTENT#,
OTSFX#,
OTREL#, OTUSRN, OTTRNC, OTTRN$, OTFL01
FROM ASTDTA.OETRANOT T01
WHERE OTTRNC IN ('QEE', 'QNE')
我想要所有有#' QEE'或者' QNE'。这些是QUote代码。我们想要一份能够告诉我们的报告,它会引用订单'转换为真正的订单而没有。
然后如果他们也有@ 23,这告诉我订单已转换或成为实际订单。我不知道如何在1 sql查询中执行此操作我正在考虑为所有QEE和QNE代码创建视图。然后针对寻找@ 23的那个运行第二个查询。
答案 0 :(得分:0)
基于我认为你想要做的事情。这将为您提供与QEE或QNE和@ 23
相关的所有订单号 SELECT T1.OrderNumber
FROM TRA99 T1
WHERE T1.OrderNumber in (
SELECT OrderNumber
FROM TRA99
WHERE TCode IN ('QEE','QNE')
)
AND T1.TCode='@23'
GROUP BY T1.OrderNumber
答案 1 :(得分:0)
您需要做的是使用GROUP BY
EXISTS
子查询可以检查您的国旗是否存在
select t1.[Order Number]
,(CASE WHEN EXISTS(select *
from TRA99 as t2
where t1.[Order Number] = t2.[Order Number]
and t2.[Tran Code] = '@23')
THEN
cast(1 as bit)
ELSE
cast(0 as bit)
END) as HasFlag
from TRA99 as t1
where t1.[Tran Code] in ('QFE', 'QNE')
group by t1.[Order Number]
注意:您没有列出您正在使用的DBMS,因此我根据Microsoft Sql Server语法编写了这个,但您可以将此概念转换为您需要的任何DBMS。