1

現在、一意のインデックスを含まないテーブルからレコードを選択するジョブ セットアップがあります。これは、テーブルと関連する列にインデックスを配置するだけで解決できることを認識していますが、このシナリオでは、テスト目的で、インデックスを削除してから、2 つの列に基づいて重複を削除する選択を行う必要があります。

SELECT DISTINCT [author], [pubDate], [dateadded]
FROM [Feeds].[dbo].[socialPosts]
WHERE CAST(FLOOR(CAST(dateadded AS float)) AS datetime) > 
                               DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE() - 2), 0)  
AND CAST(FLOOR(CAST(dateadded AS float)) AS datetime) < 
                               DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)

これにより、前日のすべてのレコードが選択され、作成者と公開日に基づいてレコードを重複排除したいと考えています。これは選択後または事前に実行できますが、選択内で実行できるかどうかを確認することが目的です。

4

1 に答える 1

1

GROUP BY列に対して任意の集計関数を使用して、dateadded一意のauthor, pubdate結果を取得できます。

SELECT  [author]
        ,[pubDate]
        ,MAX([dateadded])
 FROM   [Feeds].[dbo].[socialPosts]
 WHERE  CAST(FLOOR(CAST(dateadded AS float)) AS datetime) >  dateadd(day,datediff(day, 0, getdate()-2), 0)  
        AND CAST(FLOOR(CAST(dateadded AS float)) AS datetime) < dateadd(day,datediff(day, 0, getDate()), 0)
 GROUP BY 
        [author]
        , [pubdate]
于 2012-07-09T19:48:30.087 に答える