次のクエリを検討してください。
SELECT DISTINCT x.*
FROM (
SELECT DISTINCT Id,
VideoId,
[Date],
NTILE(2) OVER(ORDER BY VideoId) AS tile_nr
FROM
[Database].[dbo].[Table] a
) x
WHERE
CONVERT(Date, [Date]) = CONVERT(Date, GETDATE())
ビデオの合計行数は 3320 です。NTILE 関数を使用すると、リストを 2 つの部分に分割できます。したがって、最後に AND を置くと、次のようになります。
AND
x.tile_nr = 1
結果セットの前半を返します。問題、または問題であると私が信じていることは、ほとんどの場合、最初の結果セットに 1656 レコードが含まれていることです。ただし、1657 レコードを含む場合もあります。そのため、結果セットの後半も取得すると、合計が 3321 になることがあります。どうすればこれを回避できますか?