2017-09-29 27 views
0

我有這樣的子查詢使用別名或條款

LEFT MERGE JOIN 
    (SELECT SOURCERECID,TAXITEMGROUP,TAXCODE,GENERALJOURNALACCOUNTENTRY,VOUCHER,TAXAMOUNT,TAXAMOUNTCUR FROM ##TGJAE) TTRIVA ON TT.VOUCHER = TTRIVA.VOUCHER 
    AND TT.SOURCERECID = TTRIVA.SOURCERECID 
    AND TT.TAXITEMGROUP = TTRIVA.TAXITEMGROUP 
    AND (TTRIVA.TAXCODE LIKE 'RIVA%') 
    OR (TTRIVA.TAXCODE LIKE 'RISR%') 
    OR (TTRIVA.TAXCODE LIKE 'IEPSCUOTAP') 
    OR (TTRIVA.TAXCODE LIKE 'IEPS25AP')           
    OR (TTRIVA.TAXCODE LIKE 'IEPS8AP') 
    AND TTRIVA.GENERALJOURNALACCOUNTENTRY = TTGJAE.GENERALJOURNALACCOUNTENTRY 

我想知道,如果它可以應用別名像每個OR條款:

AND (TTRIVA.TAXCODE LIKE 'RIVA%') AS RIVA 
    OR (TTRIVA.TAXCODE LIKE 'RISR%') AS RISR 
    OR (TTRIVA.TAXCODE LIKE 'IEPSCUOTAP') AS IEPSCUOTAP 
    OR (TTRIVA.TAXCODE LIKE 'IEPS25AP') AS IEPS25AP          
    OR (TTRIVA.TAXCODE LIKE 'IEPS8AP') AS IEPS8AP 

有沒有辦法做到這一點?

+0

mmm ...別名是爲列而不是條件。 – dotNET

+0

但是沒有辦法實現它來命名它並將其用於查詢的另一部分? @dotNET – Ledwing

+0

不,你不能!不管怎樣,你爲什麼要這樣做? –

回答

0

別名的意思是爲結果提供臨時名稱,僅在該實例中使用。看起來你可能會最好的處理這個對象來操縱。

你能提供更多關於你爲什麼要這麼做的意見嗎?

我想這樣做,因爲到查詢的另一部分我打電話TTRIVA.TAXCODE但我不能不同我稱之爲TTRIVA.TAXCODE它可不管那5

基於此關,這聽起來像你只想返回1個特定的數據領域,而抓住多個。這最好用一個對象來完成,或者在利用這些信息的系統中(或進行單獨的查詢)完成。

您的情況也有一些問題。我建議儘可能使用括號,以使您的預期結果更清晰。

下面是一個例子:

LEFT MERGE JOIN 
(SELECT 
    SOURCERECID, 
    TAXITEMGROUP, 
    TAXCODE, 
    GENERALJOURNALACCOUNTENTRY, 
    VOUCHER,TAXAMOUNT, 
    TAXAMOUNTCUR 
    FROM ##TGJAE) AS TTRIVA 
ON TT.VOUCHER = TTRIVA.VOUCHER 
    AND TT.SOURCERECID = TTRIVA.SOURCERECID 
    AND TT.TAXITEMGROUP = TTRIVA.TAXITEMGROUP 
    AND TTRIVA.GENERALJOURNALACCOUNTENTRY = TTGJAE.GENERALJOURNALACCOUNTENTRY 
    AND (
     TTRIVA.TAXCODE LIKE 'RIVA%' 
     OR TTRIVA.TAXCODE LIKE 'RISR%' 
     OR TTRIVA.TAXCODE LIKE 'IEPSCUOTAP' 
     OR TTRIVA.TAXCODE LIKE 'IEPS25AP'           
     OR TTRIVA.TAXCODE LIKE 'IEPS8AP' 
    ) 

假設你的代碼的其餘部分是正確的,這應該工作。如果我們查看底部部分,您將獲取每個匹配的稅碼(RIVA%,RISR%,IEPSCUOTAP,IEPS25AP和IEPS8AP)的數據。如果您只需要1個稅碼,我會建議單獨的查詢,並且只在需要時運行。

希望有幫助,

+0

我想這樣做是因爲進入查詢的另一部分,我稱之爲'TTRIVA.TAXCODE',但我無法區分我稱之爲'TTRIVA.TAXCODE'的是什麼5 – Ledwing

+0

考慮到這一點,應該將它們分開連接。他們不應該全部在同一時間被集中。分區並重新排序您的查詢。如果你詳細解釋你要完成的任務,我可以幫忙寫一些:) – Seeds

+0

更新了主要答案。爲了幫助解釋,使用了比需要更長的記號。 GL。 – Seeds