2017-09-12 2 views
0

아래 쿼리에서 "초"의 평균을 찾으려고합니다. "t에서 모호한 열 참조 date_time"오류가 발생합니다.하이브의 모호한 열 참조

해결 방법이 확실하지 않습니다. 어떤 제안이라도 좋을 것입니다 !!

select dayname(tc.date_time), sum(seconds) from (
    select td.visid, td.visid1, td.num, concat(td.visid, td.visid1, td.num) as session,td.date_time, tc.date_time, 
    second(tc.date_time) - second(td.date_time) as seconds 
    from tb1 as td 
    join tb2 as tc 
    on td.visid = tc.visid and td.visid1 = tc.visid1 and td.num = tc.num and 
    td.name = 'Detail' and tc.name = 'Confirm' 
    where td.date_time between "2017-05-01 00:00:00" and "2017-07-31 00:00:00") as t 
    group by dayname(tc.date_time); 
+0

td.date_time과 tc.date_time은 모두 "date_time"이라는 열로 나열됩니다. 당신은 그들을 "as"(정확하게 당신이 세션을 한 것처럼) – Aaron

답변

0

두 테이블 모두에서 동일한 열 이름 date_time이 문제를 생성합니다. 이 두 열 모두에 별칭을 지정하십시오. 이것은 당신의 문제를 해결할 것입니다.

select dayname(t.a), sum(t.seconds) from (
    select td.visid, td.visid1, td.num, concat(td.visid, td.visid1, td.num) as session,td.date_time as d, tc.date_time as a, 
    second(tc.date_time) - second(td.date_time) as seconds 
    from tb1 as td 
    join tb2 as tc 
    on td.visid = tc.visid and td.visid1 = tc.visid1 and td.num = tc.num and 
    td.name = 'Detail' and tc.name = 'Confirm' 
    where td.date_time between "2017-05-01 00:00:00" and "2017-07-31 00:00:00") as t 
    group by dayname(t.a);