0

私はこれに似たSQLテーブルを持っています:

Value   StartDate   EndDate

StartDateとEndDateの間の間隔がテーブル全体の中で最小である値を取得する必要があります。WHERE句で表現するにはどうすればよいですか?

SQLServer2012を使用しています。

4

3 に答える 3

3

これを使って:

SELECT TOP 1 value
FROM tbl1
ORDER BY DATEDIFF(ms, StartDate, EndDate)

差が最小の1行よりもモードがある場合は、次を使用できます。

SELECT TOP 1 WITH TIES value
FROM tbl1
ORDER BY DATEDIFF(ms, StartDate, EndDate)
于 2013-02-15T11:39:28.597 に答える
2

DateDiff()これと同様に使用できるはずです:

select value, startdate, enddate
from yourtable
where datediff(ss, startdate, enddate) = (select min(datediff(ss, startdate, enddate))
                                          from yourtable)

SQL FiddlewithDemoを参照してください

于 2013-02-15T11:37:22.370 に答える
2
SELECT TOP 1 Value
FROM YourTable
ORDER BY DATEDIFF(ms, StartDate, EndDate)

同じ最小の差を持つ値が複数ある場合に選択する値については、ここでは指定されていないことに注意してください。

ただし、テーブルに多数の行がある場合、DATEDIFFはパフォーマンスに優れていない可能性があります。これが頻繁なタイプのクエリである場合は、差を別の列としてテーブルに格納し、それを使用してORDERBYを実行することを検討します。

于 2013-02-15T11:37:41.160 に答える