2017-09-12 4 views
0

私は以下のクエリから「秒」の平均を探しています。私はエラー "曖昧な列の参照date_time in t"を取得します。ハイブのあいまいな列参照

解決方法は不明です。どんな提案も素晴らしいだろう!

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); 
関連する問題