I’m trying to increment the SQL generated column “Counter” by making 1 case statement. I get the error “Invalid Column” for Counter in my case statement. Any help is appreciated.
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
Advertisement
Answer
Shot in the dark. It’s not clear what order you need the rows to be counted or what the relationship between the two tables is.
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;
Per comment below it appears you just need to count the maxima across a bunch of tables:
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;