我试图通过制作 1 个 case 语句来增加 SQL 生成的列“Counter”。 我在案例声明中收到计数器的错误“无效列”。如有任何帮助,我们将不胜感激。
SELECT 0 as Counter(Not part of any table),
CASE
WHEN dateadd(HOUR, -1,GETDATE()) >= max (a.UPDATED_DATE)
THEN
Counter + 1
WHEN dateadd(HOUR, -1,GETDATE()) >= max (b.UPDATED_DATE)
THEN
Counter + 1
ELSE
Counter + 0
END as Counter
FROM dbo.My_Dates a, Client_Dates b
最佳答案
在黑暗中拍摄。目前尚不清楚您需要按什么顺序对行进行计数,也不清楚两个表之间的关系是什么。
with m as (
SELECT *,
case when max(a.UPDATED_DATE) over () > max(b.UPDATED_DATE) over ()
then max(a.UPDATED_DATE) over () else max(b.UPDATED_DATE) over () end as last_update
FROM dbo.My_Dates a, Client_Dates b /* this cross join surely isn't right */
)
select
count(case when dateadd(hour, -1, getdate()) >= last_update then 1 end)
over (order by ??)
from m;
根据下面的评论,您似乎只需要计算一堆表中的最大值:
with d(last_updated) as (
select max(UPDATED_DATE) from T1 union all
select max(UPDATED_DATE) from T2 union all ...
select max(UPDATED_DATE) from T16
)
select count(case when dateadd(hour, -1, getdate()) >= last_update then 1 end) from d;
关于用于从多个表增加多个 case 函数的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69712874/