Hi Michael,
Thanks for your help, is there any other possible options apart from this.


On Fri, Jun 28, 2013 at 10:33 PM, Michael Malak <michaelma...@yahoo.com>wrote:

> Just copy and paste the whole long expressions to their second occurrences.
>
>   ------------------------------
>  *From:* dyuti a <hadoop.hiv...@gmail.com>
> *To:* user@hive.apache.org
> *Sent:* Friday, June 28, 2013 10:58 AM
> *Subject:* Fwd: Need urgent help in hive query
>
> Hi Experts,
> I'm trying with the below SQL query in Hive, which does not support column
> alias access in subsequent columns as shown below in the query. Is there
> any other way to rewrite the same without using alias? any of your help are
> really appreciated.
>
> INSERT INTO CAUD
>    (
>      pst_cc
>   pst_no
>   pst_ber
>   pst_tkn
>   pst_dtm
>   pst_nbr
>   pst_cde
>   pst_dte
> )
> SELECT der.cc
>   der.no
>   der.ber
>   der.tkn
>   der.dtm
>   der.nbr
>   der.cde
>   der.dte
>
> FROM (SELECT udp.cc
>    udp.no
>    udp.ber
>    udp.tkn
>    ,CASE WHEN udp.SYSTEM_DTE>16000000 AND udp.SYSTEM_DTE<100000000 THEN
> udp.SYSTEM_DTE
>             WHEN udp.DTE_OUT>16000000 AND udp.DTE_OUT<100000000 THEN
> udp.DTE_OUT
>             WHEN udp.DTE_IN>16000000 AND udp.DTE_IN<100000000 THEN
> udp.DTE_IN
>             ELSE '1231'
>             END  AS DTE_OUT
>    ,CASE WHEN udp.TME_OUT <> 0 THEN udp.TME_OUT
>             WHEN udp.TME_IN <> 0 THEN udp.TME_IN
>             ELSE 0
>             END AS TME_OUT
>             ,TRIM(CAST(TME_OUT  AS CHAR(6))) AS TME_OUT1
>     ,CAST(CAST(SUBSTR(TRIM(DTE_OUT),1,8)  AS CHAR(8)) AS DATE FORMAT
> 'yyyymmdd')  AS DTE_OUT_O
>     ,CASE WHEN TME_OUT>99999 THEN CAST(TME_OUT1 AS CHAR(6))
>             WHEN TME_OUT>9999 AND TME_OUT<=99999 THEN CAST('0'||TME_OUT1
> AS CHAR(6))
>             WHEN TME_OUT>999 AND TME_OUT<=9999 THEN CAST('00'||TME_OUT1 AS
> CHAR(6))
>             WHEN TME_OUT>99 AND TME_OUT<=999 THEN CAST('000'||TME_OUT1 AS
> CHAR(6))
>             WHEN TME_OUT>9 AND TME_OUT<=99 THEN CAST('0000'||TME_OUT1 AS
> CHAR(6))
>             WHEN TME_OUT>0 AND TME_OUT<=9 THEN CAST('00000'||TME_OUT1 AS
> CHAR(6))
>             WHEN TME_OUT=0 THEN '000000'
>             END AS TME_OUT2
>
> ,SUBSTR(TRIM(TME_OUT2),1,2)||':'||SUBSTR(TRIM(TME_OUT2),3,2)||':'||SUBSTR(TRIM(TME_OUT2),5,2)
> AS
>             TME_OUT_O
>             , CAST( DTE_OUT_O||' '||TME_OUT_O AS TIMESTAMP FORMAT
> 'YYYYMMDD:HH: MI:SS')     AS DTM
>             ,udp.nbr  AS  nbr
>
>    FROM   STS_GNCAUDP   udp
>
>             INNER JOIN LOAD_LOG LZ_LL  ON udp.LOG_KEY=LZ_LL.LOG_KEY
>             INNER JOIN ESA_LOAD_LOG ESA_LL  ON
> LZ_LL.ESA_LOAD_LOG_KEY=ESA_LL.LOG_KEY
>             AND ESA_LL.PBLSH_IND='$PBLSH_IND'
>             AND ESA_LL.LOAD_END_DTM ='$HIGH_DATE_TIME'
>             AND ESA_LL.SOR_CD= '$CLM_SOR_CD'
>             AND ESA_LL.SUBJ_AREA_NM= '$SUBJ_AREA_NM'
>             AND ESA_LL.WORK_FLOW_NM= '$WORK_FLOW_NM'
>             QUALIFY ROW_NUMBER()  OVER  (PARTITION BY udp.cc,udp.pst_no,
>             udp.cde,udp.nbr,udp.dte,udp.LOG_KEY
>             ORDER BY DTM DESC)=1) AS der
> ;
>
>
>
> Thanks in advance!
> Dti
>
>
>
>
>

Reply via email to