2014-03-28 100 views
0

我必須按如下方式在SQL中進行處理。每個訂單由許多詳細信息行組成。我只需要看一張表TRA99。需要在1 SQL中執行此操作

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

顯示你的努力? – Divya

+2

您需要1個SQL,我們需要一些努力的證明。這是交易。 –

+0

本質上你需要tran代碼中有'QEE'或'QNE'和'@ 23'的所有行。只需在查詢中添加條件。 – Rahul

回答

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 
0

你需要做的是用GROUP BYEXISTS子查詢可以檢查你的旗幟

的存在
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] 

Working example

注意:您沒有列出您所使用的數據庫管理系統,所以我寫了這個針對Microsoft SQL Server語法,但您可以翻譯這個概念到你需要的任何DBMS。

+0

db2 ibm我,但我可以更改它的水晶報告 – Adams