Tuesday, March 31, 2015

t-sql 2012 change logic to not be a cte

CTEs don't "nest" like that... The syntax looks more like this...



;WITH Daily_CTE AS (
>>Your SELECT big query here<<
), ABSResults AS (
SELECT
perID,
[date],
CAST(CASE
WHEN code IN ('GOT','SSS','UNV')
THEN CASE
WHEN SUM(absentMinutes) / dayMinutes > 1
THEN 1
ELSE SUM(absentMinutes) / dayMinutes
END
ELSE 0
END AS DECIMAL(8,3)) UnDays
FROM Daily_CTE
GROUP BY perID, [date], code, dayMinutes
ORDER BY perID, [date] DESC
)
UPDATE Atrn SET Atrn.ABS = ABSResults.UnDays
FROM
dbo.AtnDet Atrn
JOIN ABSResults
ON Atrn.perID = ABSResults.perID AND Atrn.[date] = ABSResults.[date]
WHERE
Atrn.ABS <> ABSResults.UnDays OR Atrn.ABS IS NULL





Jason Long


No comments:

Post a Comment