2017-12-11 11 views
1

私はgoogle big queryでクエリを実行して、MAX(currentTimestamp)に基づいて結果を返しますが、タイムスタンプは異なっています。Google Big Query CurrentTimestampを使用して複数の行を返す

クエリ

select 
    ticketId, 
    functionalAreaName as fan, 
    ticketTypeName as tan, 
    currentTicketStatusName as cts, 
    lastUpdatedTimestamp, 
    currentTimestamp 
from 
    General_Report_Data 
where 
    ticketId = "4543218762907648" and 
    currentTimestamp in (select max(currentTimestamp) 
         from General_Report_Data d 
         group by d.ticketId) and 
    (createdTimestamp >= '2017-01-01 00:00:00' and 
    createdTimestamp <= CURRENT_TIMESTAMP()) 

と、私はこの結果を取得しています:

Big query result Image

答えて

1

最大タイムスタンプ値をチェックし、あなたのサブクエリ内のロジックが間違っています。あなたの現在の試行が複数のレコードを与える理由は、サブクエリが複数のチケットのために、複数の最大のタイムスタンプを返すことである

SELECT ... 
FROM General_Report_Data grd 
WHERE 
    ticketId = "4543218762907648" AND 
    currentTimestamp IN (SELECT MAX(currentTimestamp) FROM General_Report_Data d 
         WHERE d.ticketId = grd.ticketId) AND 
    createdTimestamp BETWEEN '2017-01-01 00:00:00' AND CURRENT_TIMESTAMP() 

:あなたは、次のクエリを意味与えられたチケットの最大のタイムスタンプを、見つけるつもり。解析関数を使用してクエリを書き直すこともできます。

+0

私は上記のクエリを試しましたが、 "grd.ticketId"というエラーがテーブルdに見つかりませんでしたが、grd.ticketIdを "4543218762907648"に置き換えて、正しいresult.Onlyという結果が得られました。 –

+0

@kaushikdugarあなたはそのエラーが表示されるべきではなく、私の答えはANSI準拠のAFAIKです。 –

関連する問題