私はこれに似たSQLテーブルを持っています:
Value StartDate EndDate
StartDateとEndDateの間の間隔がテーブル全体の中で最小である値を取得する必要があります。WHERE句で表現するにはどうすればよいですか?
SQLServer2012を使用しています。
私はこれに似たSQLテーブルを持っています:
Value StartDate EndDate
StartDateとEndDateの間の間隔がテーブル全体の中で最小である値を取得する必要があります。WHERE句で表現するにはどうすればよいですか?
SQLServer2012を使用しています。
これを使って:
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)
DateDiff()
これと同様に使用できるはずです:
select value, startdate, enddate
from yourtable
where datediff(ss, startdate, enddate) = (select min(datediff(ss, startdate, enddate))
from yourtable)
SQL FiddlewithDemoを参照してください
SELECT TOP 1 Value
FROM YourTable
ORDER BY DATEDIFF(ms, StartDate, EndDate)
同じ最小の差を持つ値が複数ある場合に選択する値については、ここでは指定されていないことに注意してください。
ただし、テーブルに多数の行がある場合、DATEDIFFはパフォーマンスに優れていない可能性があります。これが頻繁なタイプのクエリである場合は、差を別の列としてテーブルに格納し、それを使用してORDERBYを実行することを検討します。