1

私は表に次の情報を持っています。果物の各箱が3つの品質レベル(良い、悪い、平均)のいずれかを持つことができるさまざまな果物があると仮定します。

テーブルにクエリを実行して、果物の最新の品質ステータスを取得したいと思います。

フルーツ品質タイムスタンプ
オレンジ良い11月10日午前11時20分
アップル悪い11月10日午前11時10分
バナナ良い11月10日午前10時
アップル平均11月10日午前8時
ブドウ悪い11月10日午前7時
ブドウ平均11月10日午前6時45分午前
アップルグッド11月10日午前6時20分
バナナグッド11月10日午前5時
オレンジ平均11月9日午前11時
オレンジ悪い11月9日午前10時20分
アップルグッド11月9日午前8時20分
グレープグッド11月9日午前5時
マンゴー悪い11月9日午前4時


クエリの結果は次のようになります。
オレンジ良い
アップル悪い
バナナ良い
ブドウ悪い
マンゴー悪い

私は初心者で、このクエリに苦労しています。どんな助けでもいただければ幸いです。ありがとう!

4

2 に答える 2

2

QUALIFY句と一緒にウィンドウ集計関数を使用することを検討しましたか?

SELECT Fruit
     , Grade
  FROM MyTable
 QUALIFY MAX(Timestamp) OVER (PARTITION BY Fruit) = Timestamp

また、次の方法でそれを達成できるはずです。

SELECT Fruit
     , Grade
  FROM MyTable T1
 INNER JOIN
      (SELECT Fruit
            , MAX(Timestamp) AS MaxTimeStamp
         FROM MyTable
        GROUP BY 1) DT1
    ON T1.Fruit = DT1.Fruit
   AND T1.TimeStamp = DT1.MaxTimeStamp;
于 2012-11-14T04:43:25.933 に答える
2
WITH fruitStatus
AS
(
    SELECT fruit, quality, [timestamp],
            ROW_NUMBER() OVER (Partition BY Fruit ORDER BY [TimeStamp] DESC) rn
    FROM    tableName
)
SELECT fruit, quality
FROM fruitStatus
WHERE rn = 1
于 2012-11-14T04:45:53.660 に答える