Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2008 Forums
 Transact-SQL (2008)
 CTE query within another query

Author  Topic 

KnooKie
Aged Yak Warrior

623 Posts

Posted - 2013-05-09 : 11:16:26
Hi All

Is it possible to include the following CTE query...

;WITH CTE (userid, UserCreatedDate, SubCreatedDate, ExpiryDate) AS
(
SELECT DISTINCT
u.userid,
fus.created_on AS UserCreatedDate,
fs.created_on AS SubCreatedDate,
fs.expires_on AS ExpiryDate
--'DSB' AS DataSource
FROM
dbo.tbl_Users AS u
LEFT JOIN
cds.f_user_sub AS fus ON u.userID = fus.userID
LEFT JOIN
cds.f_sub AS fs ON fs.f_sub_id = fus.f_sub_id
LEFT JOIN
cds.f_pub AS fp ON fp.f_pub_id = fs.f_pub_id
LEFT JOIN
cds.d_circ_status cs ON cs.d_circ_status_id = fs.d_circ_status_id
WHERE
fp.pub_code = '00000501' -- NEW DSB ENDS Report code
UNION
SELECT DISTINCT
u.userid,
fus.created_on AS UserCreatedDate,
fs.created_on AS SubCreatedDate,
fs.expires_on AS ExpiryDate
--'CDS' AS DataSource
FROM
dbo.tbl_Users AS u
LEFT JOIN
cds.f_user_sub AS fus ON u.userID = fus.userID
LEFT JOIN
cds.f_sub AS fs ON fs.f_sub_id = fus.f_sub_id
LEFT JOIN
cds.f_pub AS fp ON fp.f_pub_id = fs.f_pub_id
LEFT JOIN
cds.d_circ_status cs ON cs.d_circ_status_id = fs.d_circ_status_id
WHERE
fp.pub_code = '2EN' -- OLD CDS ENDS Report code
)
SELECT
userid,
MIN(UserCreatedDate) AS MinUserCreatedDate,
MIN(SubCreatedDate) AS MinSubCreatedDate,
MAX(ExpiryDate) AS MaxExpiryDate
FROM
CTE
GROUP BY
userid
ORDER BY
userid


within this one with a LEFT JOIN in the place specified below...

SELECT DISTINCT
u.userid,
upper(u.userTitle) AS Title,
upper(u.userFirstname) AS Firstname,
upper(u.userLastname) AS Lastname,
lower(u.userEmail) AS Email,
u.usercompany AS Company,
fs.customer_number,
u.userOptInThirdPartyEmails,
u.userOptInHBPLEmails,
u.is_email_verified, --1 = Yes, 0 = No
u.email_verified_on,
fus.prereqs_complete AS Is_Registered, --1 = Yes, 0 = No
cs.circ_status_code,
cs.circ_status_description
FROM
dbo.tbl_Users AS u
LEFT JOIN
cds.f_user_sub AS fus ON u.userID = fus.userID
LEFT JOIN
cds.f_sub AS fs ON fs.f_sub_id = fus.f_sub_id
LEFT JOIN
cds.f_pub AS fp ON fp.f_pub_id = fs.f_pub_id
LEFT JOIN
cds.d_circ_status cs ON cs.d_circ_status_id = fs.d_circ_status_id
/*******************************************************************
I would like to include the CTE query as a left join in here
joining on u.userid (if possible)
*******************************************************************/
WHERE
fp.pub_code = '00000501' -- NEW DSB ENDS Report code

ORDER BY
cs.circ_status_code



i seem to get incorrect syntax near ; when i try it so am wondering if it is possible to include my CTE query within the other one?

Any ideas appreciated.

====
Paul

MuMu88
Aged Yak Warrior

549 Posts

Posted - 2013-05-09 : 11:59:04



you can try something like this:
dont forget to include columns from CTE table in your final select statement...


[CODE]

;WITH CTE (userid, UserCreatedDate, SubCreatedDate, ExpiryDate) AS
(
SELECT DISTINCT
u.userid,
fus.created_on AS UserCreatedDate,
fs.created_on AS SubCreatedDate,
fs.expires_on AS ExpiryDate
--'DSB' AS DataSource
FROM
dbo.tbl_Users AS u
LEFT JOIN
cds.f_user_sub AS fus ON u.userID = fus.userID
LEFT JOIN
cds.f_sub AS fs ON fs.f_sub_id = fus.f_sub_id
LEFT JOIN
cds.f_pub AS fp ON fp.f_pub_id = fs.f_pub_id
LEFT JOIN
cds.d_circ_status cs ON cs.d_circ_status_id = fs.d_circ_status_id
WHERE
fp.pub_code = '00000501' -- NEW DSB ENDS Report code
UNION
SELECT DISTINCT
u.userid,
fus.created_on AS UserCreatedDate,
fs.created_on AS SubCreatedDate,
fs.expires_on AS ExpiryDate
--'CDS' AS DataSource
FROM
dbo.tbl_Users AS u
LEFT JOIN
cds.f_user_sub AS fus ON u.userID = fus.userID
LEFT JOIN
cds.f_sub AS fs ON fs.f_sub_id = fus.f_sub_id
LEFT JOIN
cds.f_pub AS fp ON fp.f_pub_id = fs.f_pub_id
LEFT JOIN
cds.d_circ_status cs ON cs.d_circ_status_id = fs.d_circ_status_id
WHERE
fp.pub_code = '2EN' -- OLD CDS ENDS Report code
)

SELECT DISTINCT
u.userid,
upper(u.userTitle) AS Title,
upper(u.userFirstname) AS Firstname,
upper(u.userLastname) AS Lastname,
lower(u.userEmail) AS Email,
u.usercompany AS Company,
fs.customer_number,
u.userOptInThirdPartyEmails,
u.userOptInHBPLEmails,
u.is_email_verified, --1 = Yes, 0 = No
u.email_verified_on,
fus.prereqs_complete AS Is_Registered, --1 = Yes, 0 = No
cs.circ_status_code,
cs.circ_status_description,
[INCLUDE CTE columns...]
FROM
dbo.tbl_Users AS u
LEFT JOIN
cds.f_user_sub AS fus ON u.userID = fus.userID
LEFT JOIN
cds.f_sub AS fs ON fs.f_sub_id = fus.f_sub_id
LEFT JOIN
cds.f_pub AS fp ON fp.f_pub_id = fs.f_pub_id
LEFT JOIN
cds.d_circ_status cs ON cs.d_circ_status_id = fs.d_circ_status_id
LEFT JOIN
CTE ON u.userid = CTE.userid
/*******************************************************************
I would like to include the CTE query as a left join in here
joining on u.userid (if possible)
*******************************************************************/

WHERE
fp.pub_code = '00000501' -- NEW DSB ENDS Report code

ORDER BY
cs.circ_status_code



[/CODE]
Go to Top of Page

KnooKie
Aged Yak Warrior

623 Posts

Posted - 2013-05-09 : 12:12:59
Perfect - Thank you

====
Paul
Go to Top of Page
   

- Advertisement -