Tuesday, January 21, 2014

Multiple CTE's

DECLARE @begindate datetime, @enddate datetime
set @begindate = '2014-1-1'
set @enddate = '2014-1-21'
;WITH CTE (b1_alt_id, b1_alt_id_count)
AS (SELECT distinct b1_alt_id, COUNT(B1_ALT_ID) AS 'b1_alt_id_count'
FROM B1PERMIT b1p
LEFT OUTER JOIN dbo.G6ACTION g6a ON b1p.SERV_PROV_CODE = g6a.SERV_PROV_CODE
AND b1p.B1_PER_ID1 = g6a.B1_PER_ID1
AND b1p.B1_PER_ID2 = g6a.B1_PER_ID2
AND b1p.B1_PER_ID3 = g6a.B1_PER_ID3
WHERE CONVERT(DATETIME, b1_file_dd) >= @begindate
AND CONVERT(DATETIME, b1_file_dd) < DATEADD(day, 1, @EndDate)
AND isnull(b1p.B1_APPL_CLASS, 'na') <> 'INCOMPLETE EST'
AND isnull(b1p.B1_APPL_CLASS, 'na') <> 'INCOMPLETE TMP'
AND b1p.REC_STATUS = 'A'
AND b1p.b1_appl_status <> 'cancelled'
GROUP BY b1_alt_id
),
CTE2 (b1_alt_id, b1_alt_id_count)
AS (SELECT distinct b1_alt_id, COUNT(B1_ALT_ID) AS 'b1_alt_id_count'
FROM B1PERMIT b1p
LEFT OUTER JOIN dbo.G6ACTION g6a ON b1p.SERV_PROV_CODE = g6a.SERV_PROV_CODE
AND b1p.B1_PER_ID1 = g6a.B1_PER_ID1
AND b1p.B1_PER_ID2 = g6a.B1_PER_ID2
AND b1p.B1_PER_ID3 = g6a.B1_PER_ID3
WHERE CONVERT(DATETIME, b1_file_dd) >= @begindate
AND CONVERT(DATETIME, b1_file_dd) < DATEADD(day, 1, @EndDate)
AND isnull(b1p.B1_APPL_CLASS, 'na') <> 'INCOMPLETE EST'
AND isnull(b1p.B1_APPL_CLASS, 'na') <> 'INCOMPLETE TMP'
AND b1p.REC_STATUS = 'A'
AND b1p.b1_appl_status <> 'cancelled'
AND isnull(datediff(d,b1p.B1_FILE_DD, g6a."G6_COMPL_DD" ) - (datediff(wk,b1p.B1_FILE_DD, g6a."G6_COMPL_DD" ) * 2),9999) <= 10
GROUP BY b1_alt_id
)
SELECT DISTINCT 'Heading' as Heading
    , B1_ALT_ID
, b1_per_group
, b1_per_type
, B1_PER_SUB_TYPE
, B1_FILE_DD
, dbo.fn_get_task_status(B1PERMIT.SERV_PROV_CODE, B1PERMIT.B1_PER_ID1, B1PERMIT.B1_PER_ID2, B1PERMIT.B1_PER_ID3, 'Complaint Intake', null) AS 'Workflow Status' , "G6_COMPL_DD"
, "G6_STATUS"
, "INSP_GROUP" , cast(isnull(datediff(d,B1PERMIT.B1_FILE_DD, "G6ACTION"."G6_COMPL_DD" ) - (datediff(wk,B1PERMIT.B1_FILE_DD, "G6ACTION"."G6_COMPL_DD" ) * 2),9999) as int) AS 'Date Difference'
,(SELECT b1_alt_id_count
FROM CTE
WHERE B1PERMIT.b1_alt_id = cte.b1_alt_id) AS 'b1_alt_id_count'
,(SELECT b1_alt_id_count
FROM CTE2
WHERE B1PERMIT.b1_alt_id = cte2.b1_alt_id) AS 'b1_alt_id_count_lt_10'   FROM dbo.B1PERMIT B1PERMIT
LEFT OUTER JOIN dbo.G6ACTION ON B1PERMIT.SERV_PROV_CODE = dbo.G6ACTION.SERV_PROV_CODE
AND B1PERMIT.B1_PER_ID1 = dbo.G6ACTION.B1_PER_ID1
AND B1PERMIT.B1_PER_ID2 = dbo.G6ACTION.B1_PER_ID2
AND B1PERMIT.B1_PER_ID3 = dbo.G6ACTION.B1_PER_ID3
WHERE CONVERT(DATETIME, b1_file_dd) >= @begindate
AND CONVERT(DATETIME, b1_file_dd) < DATEADD(day, 1, @EndDate)
AND isnull(B1PERMIT.B1_APPL_CLASS, 'na') <> 'INCOMPLETE EST'
AND isnull(B1PERMIT.B1_APPL_CLASS, 'na') <> 'INCOMPLETE TMP'
AND B1PERMIT.REC_STATUS = 'A'
AND B1PERMIT.b1_appl_status <> 'cancelled'
AND isnull(datediff(d,B1PERMIT.B1_FILE_DD, "G6ACTION"."G6_COMPL_DD" ) - (datediff(wk,B1PERMIT.B1_FILE_DD, "G6ACTION"."G6_COMPL_DD" ) * 2),9999) <= 10
AND dbo.fn_get_task_status(B1PERMIT.SERV_PROV_CODE, B1PERMIT.B1_PER_ID1, B1PERMIT.B1_PER_ID2, B1PERMIT.B1_PER_ID3, 'Complaint Intake', null) = 'Emergency'