使用别名或子句

时间:2017-09-29 05:16:18

标签: sql

我有这个子查询

 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

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

Alias用于为结果提供临时名称,仅在该实例中使用。看起来你可能最好处理一个被操纵的对象。

您能否提供更多有关您希望这样做的信息?

  

我想这样做是因为在查询的另一部分我调用了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)的数据。如果您只想要一个税码,我建议您单独查询,只在需要时运行它们。

希望有所帮助,