次のクエリがあります。
1
SELECT TOP 1
CASE WHEN latency=-1
THEN 'Down'
ELSE 'Up'
END AS status
FROM
@pings_temp
ORDER BY datetime DESC;
2
SELECT TOP 1
CASE WHEN latency=-1
THEN 'Down'
ELSE 'Up'
END AS status,
CASE WHEN latency=-1
THEN
(
SELECT TOP 1
datetime
FROM
@downtimes_temp
ORDER BY
datetime DESC
)
ELSE NULL
END AS datetime
FROM
@pings_temp
ORDER BY datetime DESC;
最初の列は ' Up ' のみを生成し、2 番目の列は最初の列で ' Up ' を生成し、2 番目の列でNULLを生成する必要があります。
ただし、これは起こりません。最初のクエリは正確に実行されますが、2 番目の列を SELECT に追加すると、クエリが暴走し、一見ランダムな列から' Down ' と日付が読み取られます。
同じ T-SQL バッチからの 2 つの結果の画像を次に示します。