SQL【CASE查询视图】
SELECT
DT, FlowParam, Abs_P, T, Volume, Energy, FlowTime_T,
(SELECT ' > 1 ' AS Expr1 WHERE (
(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)
) > 1
)) AS Something
FROM dbo.BACS_HourFlow_1
如果 WHERE... = 1
,我需要 BACS_Alarm_1
表中的输出字段 AS Something
如果 = 0,则输出 Null
...并输出我的消息如果> 1(已经做好了)
我怎样才能实现这个案例?
所以 如果
(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)
) > 1
我输出 ' > 1 ' 作为
if = 1 我从 dbo.BACS_Alarm_1 输出一个字段 if = 0 我输出0或null
SELECT
DT, FlowParam, Abs_P, T, Volume, Energy, FlowTime_T,
(SELECT ' > 1 ' AS Expr1 WHERE (
(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)
) > 1
)) AS Something
FROM dbo.BACS_HourFlow_1
I need output field AS Something
from BACS_Alarm_1
table if WHERE... = 1
and output Null
if = 0
...and output my message if > 1 (that's already made)
How can I realize this case ?
So
if
(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)
) > 1
I output ' > 1 ' as something
if = 1 I output a field from dbo.BACS_Alarm_1
if = 0 I output 0 or null
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
保留大部分原样,您可以写:
尽管如此,我认为它可以改进一点...我不认为子查询是必要的。既然你提到值 1 和 0 作为可能的结果,我认为你也可以省略 COUNT:
如果确实有更多可能的结果,并且原始中的
COUNT
可能产生超过 1,你可以写它像这样:Leaving most as is, you could write:
Still, I think it can be improved a bit...I dont think the subquery is necessary. Since you mentioned values 1 and 0 as possible outcomes, I think you can omit COUNT too:
If there really are more results posible, and the
COUNT
in the original could yield more than 1, you could write it like this: