Оставив большинство как есть, вы можете написать:
SELECT
DT, FlowParam, Abs_P, T, Volume, Energy, FlowTime_T,
CASE (
SELECT COUNT(*) AS Expr2
FROM dbo.BACS_Alarm_1
WHERE (DT_T >= dbo.BACS_HourFlow_1.DT_T)
AND (DT_T <= dbo.BACS_HourFlow_1.DT_T + dbo.BACS_HourFlow_1.FlowTime_T)
) WHEN 0 THEN NULL
WHEN 1 THEN ' > 1 '
ELSE 'something else'
END AS Something
FROM dbo.BACS_HourFlow_1
Тем не менее, я думаю, что это можно немного улучшить ... Я не думаю, что подзапрос необходим. Поскольку вы упомянули значения 1 и 0 в качестве возможных результатов, я думаю, что вы также можете опустить COUNT:
SELECT DT
, FlowParam
, Abs_P
, T
, Volume
, Energy
, FlowTime_T
, CASE
WHEN dbo.BACS_Alarm_1.DT_T IS NULL THEN NULL
ELSE ' > 1'
END AS Something
FROM dbo.BACS_HourFlow_1
LEFT JOIN dbo.BACS_Alarm_1
ON dbo.BACS_HourFlow_1.DT_T <= dbo.BACS_Alarm_1.DT_T
AND dbo.BACS_HourFlow_1.DT_T + dbo.BACS_HourFlow_1.FlowTime_T >= dbo.BACS_Alarm_1DT_T
Если действительно есть больше результатов, а COUNT
в оригинале может дать больше 1, вы можете написать это так:
SELECT DT
, FlowParam
, Abs_P
, T
, Volume
, Energy
, FlowTime_T
, CASE COUNT(*)
WHEN 0 THEN NULL
WHEN 1 THEN ' > 1'
ELSE 'something else'
END AS Something
FROM dbo.BACS_HourFlow_1
LEFT JOIN dbo.BACS_Alarm_1
ON dbo.BACS_HourFlow_1.DT_T <= dbo.BACS_Alarm_1.DT_T
AND dbo.BACS_HourFlow_1.DT_T + dbo.BACS_HourFlow_1.FlowTime_T >= dbo.BACS_Alarm_1DT_T
GROUP BY BACS_HourFlow_1.DT
, BACS_HourFlow_1.FlowParam
, BACS_HourFlow_1.Abs_P
, BACS_HourFlow_1.T
, BACS_HourFlow_1.Volume
, BACS_HourFlow_1.Energy
, BACS_HourFlow_1.FlowTime_T