質問

テーブルの個別のレコードのセットと、すべての複製の最大日付を取得する必要があります。

例:

Select distinct a,b,c, Max(OrderDate) as maxDate
From ABC
Group By a,b,c

問題は、異なる日付ごとにレコードを取得することです。

例:

aaa, bbb, ccc, Jan 1 2009
aaa, bbb, ccc, Jan 28 2009

これを制限するにはどうすればよいですか:

aaa, bbb, ccc Jan 28 2009

問題はgorupによるものであり、明確にうまくいかないことを前提としています。

編集:問題の原因となっている問題が見つかりました。クエリ結果は上記のようではなく、予想どおりでした。

役に立ちましたか?

解決

クエリまたは例の結果のいずれかが間違っています。説明することはできません。実際のSQLと実際の結果はどうですか?

いずれにしても、選択するのは3つのグループ化された列であり、集計であるため、 distinct は必要ありません。私はこれを試したことがないので、これらの両方を使用する場合、おそらくいくつかの誤動作があります。 distinct を削除しようとしましたか?何故そこに置いたのですか?

他のヒント

WITH q AS (
        SELECT  abc.*, ROW_NUMBER() OVER (PARTITION BY a, b, c ORDER BY orderDate DESC) AS rn
        FROM    abc
        )
SELECT  *
FROM    q
WHERE   rn = 1

(a、b、c、orderDate)(この順序で)にインデックスを作成すると、このクエリが大幅に改善されます。

このクエリを実行する場合:

select 'ab' as Col1, 'bc' as col2, 'cd' as col3, getdate() as Date
into #temp
insert into #temp
values ('ab','bc','cd','1/15/09')
insert into #temp
values ('aa','bb','cc','1/1/09')
insert into #temp
values ('aa','bb','cc','1/22/09')

select col1,col2,col3,max(date)
from #temp
group by col1,col2,col3

戻る必要があります:

  

aa、bb、cc、2009-01-22 00:00:00.000
  ab、bc、cd、2009-04-30 09:23:07.090

クエリも機能するため、何かが実際に間違っているか、コードの正確な性質を適切に伝えていない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top