0

誰かがこの SQL ステートメントで私を助けてくれれば幸いです。私は現在これを持っています:

select sum(datediff(second, [date1], [date2])) from [MyTable] where <condition>

ただし、この選択を調整する必要があります。つまり、日付間の差が @MaxDiffSecs より大きい場合は、代わりに @MaxDiffSecs を合計に使用する必要があります。MIN 演算子を調べてみましたが、パラメーターが 1 つしかなく、最小値を取得するには少なくとも 2 つが必要です。

とにかく、事前に感謝します。(私が SQL であまり効率的ではないことがわかると思います :)

4

1 に答える 1

3
SELECT SUM(
    CASE WHEN DATEDIFF(second, [date1], [date2]) > @MaxDiffSecs THEN @MaxDiffSecs
    ELSE DATEDIFF(second, [date1], [date2]) END)
FROM [MyTable] 
WHERE <condition>

これは私の頭の中から外れています.CASEが内部で機能するかどうかはわかりません.SUM

その構文が機能しない場合は、CTE を使用できます

WITH ValuesToSum AS (
    SELECT CASE WHEN DATEDIFF(second, [date1], [date2]) > @MaxDiffSecs THEN @MaxDiffSecs
        ELSE DATEDIFF(second, [date1], [date2]) END AS TheValue
    FROM [MyTable]
    WHERE <condition>
)

SELECT SUM(TheValue) FROM ValuesToSum
于 2011-07-13T19:33:05.283 に答える