ORA-00907: missing right parenthesis 00907. 00000 - "missing right parenthesis" *Cause: *Action: Error at Line: 44 Column: 30 - sql

I am executing the following query:
SELECT *
FROM (SELECT *
FROM (SELECT DISTINCT r.llobjid AS dataid,
r.drawingid,
r.revisionid,
r.revisionnumber AS Revision_Number,
r.revisionlabel,
r.minorrevisionlabel,
r.revisiontype,
p.project AS Project,
r.revisionstatus,
r.r1i AS SignIn_Requestor,
r.r2i AS SeedFileVersion,
rt.display_type_name AS Revision_Type,
rt.can_signin,
rs.display_status_name AS Revision_Status,
a.adntypeid,
at.NAME AS ADN_Type,
a.requestby,
a.assignbyAS Assign_By_Id,
' ' AS Assign_By,
a.assigndate,
' ' AS Assign_Date
FROM adnids a
INNER JOIN crt_revision r
ON r.drawingid = a.adnid
AND Upper(a.wholeid) LIKE '4160%'
INNER JOIN adntypes at
ON a.adntypeid = at.adntypeid
AND at.orgunitid = 21
INNER JOIN crt_project p
ON r.projectid = p.projectid
AND p.ouid = 21
LEFT OUTER JOIN crt_revision_type_map rt
ON r.revisiontype = rt.revtypeid
AND rt.ouid = 21
LEFT OUTER JOIN crt_revision_status_map rs
ON r.revisionstatus = rs.revstatusid
AND rs.ouid = 21
WHERE ( r.revisionstatus = 2 )) tbl1
INNER JOIN (SELECT DISTINCT d.dataid AS LLDataID,
Cast(d.dcomment AS NVARCHAR(4000)) AS
Title,
d.NAME AS Document_Name,
d.createdate AS Created_Date,
d.modifydate AS Modified_Date,
d.subtype,
d.versionnum,
d.permid,
d.reserved,
d.ownerid
FROM crt_revision r3
INNER JOIN adnids a3
ON r3.drawingid = a3.adnid
AND Upper(a3.wholeid) LIKE '4160%'
INNER JOIN dtree d
ON r3.llobjid = d.dataid
WHERE ( r3.revisionstatus = 2 )) tbl2
ON tbl1.dataid = tbl2.lldataid
LEFT OUTER JOIN (SELECT DISTINCT l.dataid AS asm_dataid,
l.stateid,
l.intransition,
ls.NAME AS Current_State,
ls.signin,
ls.lifecycleid,
ll.NAME AS Lifecycle
FROM crt_revision r5
INNER JOIN adnids a5
ON r5.drawingid = a5.adnid
AND Upper(a5.wholeid) LIKE '4160%'
INNER JOIN lm_lifecycles l
ON l.dataid = r5.llobjid
INNER JOIN lm_def_states ls
ON l.stateid = ls.stateid
INNER JOIN lm_def_lifecycles ll
ON ls.lifecycleid =
ll.lifecycleid
WHERE ( r5.revisionstatus = 2 )) tbl4
ON tbl1.dataid = tbl4.asm_dataid
WHERE ( EXISTS (SELECT b.dataid
FROM dtreeacl b
WHERE b.dataid = Nvl(tbl2.permid, tbl2.lldataid)
AND ( rightid IN ( -2, -1, 1000, 1001 ) )
AND see > 0) )
ORDER BY modified_date DESC) tbl100
WHERE rownum <= 25
ORACLE SQL Developer throws an error as: ORA-00907: missing right
parenthesis
It looks like everything is fine but don't understand where am I getting the error of missing right parenthesis.

It is all because of Cast(d.dcomment AS NVARCHAR(4000)). NVARCHAR is not a valid data type.
Change it to Cast(d.dcomment AS NVARCHAR2(2000))
It will work
Fiddle
In the fiddle my sample is
select Cast('ddd' AS NVARCHAR2(2000)) AS dd from dual
If you change it in to
select Cast('ddd' AS NVARCHAR(2000)) AS dd from dual
You will get the error
ORA-00907: missing right parenthesis
Cast Operator in Oracle Tutorial
Data Types in Oracle

Related

Group BY Expression column

we're trying to make our table add together all values in column 2 (QtyComp - an expression column of qtyorder * totalqty basically), where they have the same ItemNo (column 1).
So, we currently get the below:
ItemNo QtyCom
7441 3
7441 1
7441 5
What we want is it to return this:
ItemNo QtyCom
7441 9
Our code is below; I've bolded the part that we need it to sum the results of:
SELECT TOP (100) PERCENT ItemSpecs_2.itemno,
workorderdetails.qtycomplete *
ItemSpecFullStruc_2.totalqtyperroot AS QtyComp
FROM dbo.workorderdetails AS WorkOrderDetails
INNER JOIN dbo.itemspecfullstruc AS ItemSpecFullStruc_2
ON ItemSpecFullStruc_2.rootitemspecid =
workorderdetails.itemspecid
INNER JOIN dbo.itemspecs AS ItemSpecs_2
ON ItemSpecs_2.itemspecid = ItemSpecFullStruc_2.childitemspecid
INNER JOIN dbo.workorder AS WorkOrder_1
ON WorkOrder_1.workorderid = workorderdetails.workorderid
LEFT OUTER JOIN dbo.tobescheduled_completed
ON WorkOrder_1.workorderid =
dbo.tobescheduled_completed.workorderid
WHERE ( workorderdetails.completed = 1 )
AND ( workorderdetails.compdate > Getdate() - 42 )
GROUP BY ItemSpecs_2.itemno,
workorderdetails.qtyordered,
ItemSpecFullStruc_2.totalqtyperroot,
workorderdetails.[lineno],
workorderdetails.qtycomplete,
workorderdetails.compdate,
workorderdetails.qtycomplete * ItemSpecFullStruc_2.totalqtyperroot
We would really appreciate some ideas!
Thanks,
Trish
Try this
SELECT TOP (100) PERCENT ItemSpecs_2.itemno,
sum(workorderdetails.qtycomplete *
ItemSpecFullStruc_2.totalqtyperroot) AS QtyComp
FROM dbo.workorderdetails AS WorkOrderDetails
INNER JOIN dbo.itemspecfullstruc AS ItemSpecFullStruc_2
ON ItemSpecFullStruc_2.rootitemspecid =
workorderdetails.itemspecid
INNER JOIN dbo.itemspecs AS ItemSpecs_2
ON ItemSpecs_2.itemspecid = ItemSpecFullStruc_2.childitemspecid
INNER JOIN dbo.workorder AS WorkOrder_1
ON WorkOrder_1.workorderid = workorderdetails.workorderid
LEFT OUTER JOIN dbo.tobescheduled_completed
ON WorkOrder_1.workorderid =
dbo.tobescheduled_completed.workorderid
WHERE ( workorderdetails.completed = 1 )
AND ( workorderdetails.compdate > Getdate() - 42 )
GROUP BY ItemSpecs_2.itemno,
workorderdetails.qtyordered,
ItemSpecFullStruc_2.totalqtyperroot,
workorderdetails.[lineno],
workorderdetails.qtycomplete,
workorderdetails.compdate
Once you will use top for select statement, you need to use order by. you can try the following query.
SELECT TOP(100) PERCENT A.itemno,SUM(QtyComp) FROM
(SELECT ItemSpecs_2.itemno,
(workorderdetails.qtycomplete *
ItemSpecFullStruc_2.totalqtyperroot) AS QtyComp
FROM dbo.workorderdetails AS WorkOrderDetails
INNER JOIN dbo.itemspecfullstruc AS ItemSpecFullStruc_2
ON ItemSpecFullStruc_2.rootitemspecid =
workorderdetails.itemspecid
INNER JOIN dbo.itemspecs AS ItemSpecs_2
ON ItemSpecs_2.itemspecid = ItemSpecFullStruc_2.childitemspecid
INNER JOIN dbo.workorder AS WorkOrder_1
ON WorkOrder_1.workorderid = workorderdetails.workorderid
LEFT OUTER JOIN dbo.tobescheduled_completed
ON WorkOrder_1.workorderid =
dbo.tobescheduled_completed.workorderid
WHERE ( workorderdetails.completed = 1 )
AND ( workorderdetails.compdate > Getdate() - 42 ) ) A
GROUP BY A.itemno
ORDER BY A.itemno
Thanks
SELECT SUM(QTYCOM) OVER (PARTITION BY ITEMNO)
FROM
...

The multi-part identifier "C.C_CRNT_STAT_CD" could not be bound

This may be impossible to answer but I am hoping for the best. I am far from an expert and have taken over this query from my predecessor. I have researched this error AT LENGTH and I do understand what it means I just cannot figure out what I am missing.
I added ********* behind each of my changes from the original query. I am trying to add the field C.C_CRNT_STAT_CD to the query below and received the
error: Lookup Error - SQL Server Database Error: The multi-part
identifier "C.C_CRNT_STAT_CD" could not be bound.
I would greatly appreciate any help and thank you so much in advance.
SELECT DISTINCT
zSTANCSPED1.CSPED_LAST_NM,
zSTANCSPED1.CSPED_FIRST_NM,
zSTANCSPED1.CSPED_MIDDLE_NM,
zSTANCSPED1.CSPED_SSN,
zSTANCSPED1.CSPED_DOB,
zSTANCSPED1.CSPED_STUDY_ID,
zSTANCSPED1.CSPED_RA_DATE,
zSTANCSPED1.P_CSE_EXTID,
zSTANCSPED1.C_CASE_EXTID,
zSTANCSPED1.CC_COURT_CASE_EXTID,
SUP.S_ACTV_NM_CD,
SUP.S_TYPE_CD,
SUP.S_SUPR_LVL,
C.C_CRNT_STAT_CD,******************
CASE WHEN (SUP.S_STRT_TS LIKE '%1900%') OR (SUP.S_STRT_TS LIKE '%1901%')
THEN NULL
ELSE CONVERT(DATETIME, SUP.S_STRT_TS, 108)
END AS 'S_STRT_TS',
CASE WHEN (SUP.S_END_TS LIKE '%1900%') OR (SUP.S_END_TS LIKE '%1901%')
THEN NULL
ELSE CONVERT(DATETIME, SUP.S_END_TS, 108)
END AS 'S_END_TS',
SUP.S_SUPR_DESC
FROM
(SELECT * FROM zSTANCSPED
LEFT JOIN (SELECT PD.P_PRTCP_ID,PD.SSN_SOC_SECURE_NUM,PD.P_CSE_EXTID,
PD.BI_BIRTH_DT
FROM PARTICIPANT_DEMOGRAPHIC PD) PD
ON zSTANCSPED.CSPED_SSN = PD.SSN_SOC_SECURE_NUM
AND zSTANCSPED.CSPED_DOB = PD.BI_BIRTH_DT
LEFT JOIN (SELECT CP.CP_PRTCP_ID,CP.CP_CASE_ID,CP.CP_ROLE_CD
FROM CASE_PARTICIPANT CP
WHERE CP.CP_STAT_CD <> 'OBS') CP
ON CP.CP_PRTCP_ID = PD.P_PRTCP_ID
LEFT JOIN (SELECT C.MTH_YR,C.CAS_CASE_ACCT_SUM_ID,C.C_CASE_ID,C.C_CASE_EXTID,C.C_MNG_CNTY_FIPS_CD,C.C_CRNT_STAT_CD*************
FROM CASE_CAS C
WHERE (C.C_CRNT_STAT_CD <> 'obs')) C
ON CP.CP_CASE_ID = C.C_CASE_ID
LEFT JOIN (SELECT CCC.CCC_CASE_ID,CC.CC_COURT_CASE_EXTID,
LA.LA_FILE_DT,LA.SO_HLTH_INSURE_ORDR_CD, CC_COURT_CASE_ID,LA_COURT_CASE_ID,LA.LA_LEGL_ACTV_ID
FROM CASE_COURT_CASE CCC
JOIN COURT_CASE AS CC
ON CC.CC_COURT_CASE_ID =
CCC.CCC_COURT_CASE_ID
JOIN LEGAL_ACTIVITY AS LA
ON LA.LA_COURT_CASE_ID =
CC.CC_COURT_CASE_ID AND LA.LA_LGL_ACTV_TYPE_CD = 'SUP'
AND LA.LA_STAT_CD = 'ACT'
) AS LA
ON LA.CCC_CASE_ID = C.C_CASE_ID ) zSTANCSPED1
JOIN SUPPRESSION SUP
ON zSTANCSPED1.CP_PRTCP_ID = SUP.S_PRTCP_ID
UNION
SELECT DISTINCT
zSTANCSPED1.CSPED_LAST_NM,
zSTANCSPED1.CSPED_FIRST_NM,
zSTANCSPED1.CSPED_MIDDLE_NM,
zSTANCSPED1.CSPED_SSN,
zSTANCSPED1.CSPED_DOB,
zSTANCSPED1.CSPED_STUDY_ID,
zSTANCSPED1.CSPED_RA_DATE,
zSTANCSPED1.P_CSE_EXTID,
zSTANCSPED1.C_CASE_EXTID,
zSTANCSPED1.CC_COURT_CASE_EXTID,
SUP.S_ACTV_NM_CD,
SUP.S_TYPE_CD,
SUP.S_SUPR_LVL,
C.C_CRNT_STAT_CD,**************
CASE WHEN (SUP.S_STRT_TS LIKE '%1900%') OR (SUP.S_STRT_TS LIKE '%1901%')
THEN NULL
ELSE CONVERT(DATETIME, SUP.S_STRT_TS, 108)
END AS 'S_STRT_TS',
SUP.S_END_TS,
SUP.S_SUPR_DESC
FROM
(SELECT * FROM zSTANCSPED
LEFT JOIN (SELECT PD.P_PRTCP_ID,PD.SSN_SOC_SECURE_NUM,PD.P_CSE_EXTID,
PD.BI_BIRTH_DT
FROM PARTICIPANT_DEMOGRAPHIC PD) PD
ON zSTANCSPED.CSPED_SSN = PD.SSN_SOC_SECURE_NUM
AND zSTANCSPED.CSPED_DOB = PD.BI_BIRTH_DT
LEFT JOIN (SELECT CP.CP_PRTCP_ID,CP.CP_CASE_ID,CP.CP_ROLE_CD
FROM CASE_PARTICIPANT CP
WHERE CP.CP_STAT_CD <> 'OBS') CP
ON CP.CP_PRTCP_ID = PD.P_PRTCP_ID
LEFT JOIN (SELECT C.MTH_YR,C.CAS_CASE_ACCT_SUM_ID,C.C_CASE_ID,C.C_CASE_EXTID,C.C_MNG_CNTY_FIPS_CD,C.C_CRNT_STAT_CD**************
FROM CASE_CAS C
WHERE (C.C_CRNT_STAT_CD <> 'obs')) C
ON CP.CP_CASE_ID = C.C_CASE_ID
LEFT JOIN (SELECT CCC.CCC_CASE_ID,CC.CC_COURT_CASE_EXTID,
LA.LA_FILE_DT,LA.SO_HLTH_INSURE_ORDR_CD, CC_COURT_CASE_ID,LA_COURT_CASE_ID,LA.LA_LEGL_ACTV_ID
FROM CASE_COURT_CASE CCC
JOIN COURT_CASE AS CC
ON CC.CC_COURT_CASE_ID =
CCC.CCC_COURT_CASE_ID
JOIN LEGAL_ACTIVITY AS LA
ON LA.LA_COURT_CASE_ID =
CC.CC_COURT_CASE_ID AND LA.LA_LGL_ACTV_TYPE_CD = 'SUP'
AND LA.LA_STAT_CD = 'ACT'
) AS LA
ON LA.CCC_CASE_ID = C.C_CASE_ID ) zSTANCSPED1
JOIN SUPPRESSION SUP
ON zSTANCSPED1.C_CASE_ID = SUP.S_CASE_ID
UNION
SELECT DISTINCT
zSTANCSPED1.CSPED_LAST_NM,
zSTANCSPED1.CSPED_FIRST_NM,
zSTANCSPED1.CSPED_MIDDLE_NM,
zSTANCSPED1.CSPED_SSN,
zSTANCSPED1.CSPED_DOB,
zSTANCSPED1.CSPED_STUDY_ID,
zSTANCSPED1.CSPED_RA_DATE,
zSTANCSPED1.P_CSE_EXTID,
zSTANCSPED1.C_CASE_EXTID,
zSTANCSPED1.CC_COURT_CASE_EXTID,
SUP.S_ACTV_NM_CD,
SUP.S_TYPE_CD,
SUP.S_SUPR_LVL,
C.C_CRNT_STAT_CD,***************
CASE WHEN (SUP.S_STRT_TS LIKE '%1900%') OR (SUP.S_STRT_TS LIKE '%1901%')
THEN NULL
ELSE CONVERT(DATETIME, SUP.S_STRT_TS, 108)
END AS 'S_STRT_TS',
SUP.S_END_TS,
SUP.S_SUPR_DESC
FROM
(SELECT * FROM zSTANCSPED
LEFT JOIN (SELECT PD.P_PRTCP_ID,PD.SSN_SOC_SECURE_NUM,PD.P_CSE_EXTID,
PD.BI_BIRTH_DT
FROM PARTICIPANT_DEMOGRAPHIC PD) PD
ON zSTANCSPED.CSPED_SSN = PD.SSN_SOC_SECURE_NUM
AND zSTANCSPED.CSPED_DOB = PD.BI_BIRTH_DT
LEFT JOIN (SELECT CP.CP_PRTCP_ID,CP.CP_CASE_ID,CP.CP_ROLE_CD
FROM CASE_PARTICIPANT CP
WHERE CP.CP_STAT_CD <> 'OBS') CP
ON CP.CP_PRTCP_ID = PD.P_PRTCP_ID
LEFT JOIN (SELECT C.MTH_YR,C.CAS_CASE_ACCT_SUM_ID,C.C_CASE_ID,C.C_CASE_EXTID,C.C_MNG_CNTY_FIPS_CD,C.C_CRNT_STAT_CD*************
FROM CASE_CAS C
WHERE (C.C_CRNT_STAT_CD <> 'obs')) C
ON CP.CP_CASE_ID = C.C_CASE_ID
LEFT JOIN (SELECT CCC.CCC_CASE_ID,CC.CC_COURT_CASE_EXTID,
LA.LA_FILE_DT,LA.SO_HLTH_INSURE_ORDR_CD, CC_COURT_CASE_ID,LA_COURT_CASE_ID,LA.LA_LEGL_ACTV_ID
FROM CASE_COURT_CASE CCC
JOIN COURT_CASE AS CC
ON CC.CC_COURT_CASE_ID =
CCC.CCC_COURT_CASE_ID
JOIN LEGAL_ACTIVITY AS LA
ON LA.LA_COURT_CASE_ID =
CC.CC_COURT_CASE_ID AND LA.LA_LGL_ACTV_TYPE_CD = 'SUP'
AND LA.LA_STAT_CD = 'ACT'
) AS LA
ON LA.CCC_CASE_ID = C.C_CASE_ID ) zSTANCSPED1
JOIN SUPPRESSION SUP
ON zSTANCSPED1.LA_COURT_CASE_ID = SUP.S_COURT_CASE_ID
The alias C is part of your subquery. This might help show the structure:
FROM
(
SELECT *
.
.
.
LEFT JOIN
(
SELECT
C.MTH_YR,
C.CAS_CASE_ACCT_SUM_ID,
C.C_CASE_ID,
C.C_CASE_EXTID,
C.C_MNG_CNTY_FIPS_CD,
C.C_CRNT_STAT_CD --*************
FROM CASE_CAS AS C
WHERE(C.C_CRNT_STAT_CD <> 'obs')
) AS C ON CP.CP_CASE_ID = C.C_CASE_ID
LEFT JOIN
.
.
.
) AS zSTANCSPED1
JOIN SUPPRESSION AS SUP ON zSTANCSPED1.CP_PRTCP_ID = SUP.S_PRTCP_ID
.
.
.
The subquery named zSTANCSPED1 has SELECT *, so it looks like you should be able to just replace the C. with zSTANCSPED1.
It is beyond what you asked, but I would suggest avoiding SELECT * and explicitly listing the columns that you need.
ohh come on.. this was simple. In the top select query it needs to be zSTANCSPED1.C_CRNT_STAT_CD

Join two select queries horizontally in Postgresql

I have following two queries:
Query #1:
(SELECT
pl.c_project_Id, pl.c_projectphase_Id, pl.c_projecttask_Id, pl.m_product_Id,
pj.name as projectname, ph.name as phasename, pt.name as taskname, pd.name as prodname,
round(pl.plannedqty, 2) as planqty, round(pl.plannedprice, 2) as planrate,
round(pl.plannedamt, 2) as planamt
FROM adempiere.c_projectline pl
LEFT JOIN adempiere.c_project pj ON pl.c_project_id = pj.c_project_id
LEFT JOIN adempiere.c_projectphase ph ON pl.c_projectphase_id = ph.c_projectphase_id
LEFT JOIN adempiere.c_projecttask pt ON pl.c_projecttask_id = pt.c_projecttask_id
LEFT JOIN adempiere.m_product pd ON pl.m_product_id = pd.m_product_id
WHERE pl.c_project_id = 1000001 AND pl.ad_client_id = 1000000
ORDER BY ph.c_projectphase_id, pt.c_projecttask_id)
Output is: 11 columns and 16 rows
Query #2:
(SELECT
fa.c_project_id, fa.c_projectphase_id, fa.c_projecttask_id, fa.m_product_id,
pj.name as costprojectname, ph.name as costphasename, pt.name as costtaskname,
pd.name as costprodname,
abs(fa.qty) as costqty, round((fa.amtacctdr/fa.qty), 2) as costrate,
round(sum(fa.amtacctdr), 0) as costamt
FROM adempiere.fact_acct fa
LEFT JOIN adempiere.c_project pj ON fa.c_project_id = pj.c_project_id
LEFT JOIN adempiere.c_projectphase ph ON fa.c_projectphase_id = ph.c_projectphase_id
LEFT JOIN adempiere.c_projecttask pt ON fa.c_projecttask_id = pt.c_projecttask_id
LEFT JOIN adempiere.m_product pd ON fa.m_product_id = pd.m_product_id
WHERE fa.c_project_id = 1000001 AND (fa.gl_category_id = 1000006 OR fa.gl_category_id = 1000005)
AND fa.qty > 0 AND fa.c_project_id is not null
GROUP BY fa.m_product_id, fa.c_project_id, fa.c_projectphase_id, fa.c_projecttask_id,
fa.qty, fa.amtacctdr,
pj.name, ph.name, pt.name, pd.name)
Output is: 11 columns and 6 rows
I want to join these queries horizontally, display all columns but rows should not duplicate. As when I apply union to join them the result shows duplicate rows. How can I cope with this issue?
You should be able to join queries like this:
select * from
(
<your first query here>
) tbl1
join (
<your second query here>
) tbl2
on tbl1.c_project_Id = tbl2.c_project_Id
and tbl1.c_projectphase_Id = tbl2.c_projectphase_Id -- you might add or
and tbl1.c_projecttask_Id = tbl2.c_projecttask_Id -- remove join criteria
and tbl1.m_product_Id = tbl2.m_product_Id -- here

Select only the rows where column values appear more than once

I have a select statement similar to the following:
select *
from A
inner join B on A.id_x = B.id_x
inner join C on B.id_y = C.id_y
inner join D on C.id_z = D.id_z
where
A.date > '2014-01-01'
and A.id_y = 154
and D.id_t = 2
What I want is to do something like this and count(A.id_x) > 1, which returns only the parts of the original select which repeat on A.id_x.
Is this possible?
EDIT:
I just tried to solve it using temp tables, with the code I got from T-SQL Insert into table without having to specify every column
Select * Into
#tmpBigTable
From [YourBigTable]
But I got an error message because my tables have the same column names, A.id_x and B.id_x, for example.
"Column names in each table must be unique."
Is there some way to force the issue, or declare arbitrary naming extensions?
select *
from A
inner join B on A.id_x = B.id_x
inner join C on B.id_y = C.id_y
inner join D on C.id_z = D.id_z
where
A.date > '2014-01-01'
and A.id_y = 154
and D.id_t = 2
AND A.id_x IN
(
SELECT A.id_x FROM A
GROUP BY A.id_x
HAVING count(A.id_x)>1);
You can do this with window functions:
select *
from (select *, count(*) over (partition by A.id_x) as cnt
from A inner join
B
on A.id_x = B.id_x inner join
C
on B.id_y = C.id_y inner join
D
on C.id_z = D.id_z
where A.date > '2014-01-01' and A.id_y = 154 and D.id_t = 2
) abcd
where cnt > 1;

SQL Left Join Syntax Error

Can someone please help resolve an issue, I am left joining two CTE's?
Msg 102, Level 15, State 1, Line 19
Incorrect syntax near '('.
Msg 156, Level 15, State 1, Line 26
Incorrect syntax near the keyword 'left'.
Query:
with Cte_LatestPatInfo as
(select max(a.LogID) as LastPatRec, p.unitnum, p.PatNum, a.iplan from rrscsql2.arhighdollar.dbo.tblarinfoHistory a
inner join rrscsql2.arhighdollar.dbo.tblPatInfoHistory p
on a.patID=p.patID and a.LogID=p.LogID
where a.Active = 1
and a.ReasonCode is not null
group by p.unitnum, p.PatNum, a.iplan)
select *,rc.Description from rrscsql2.arhighdollar.dbo.tblPatInfoHistory p
inner join cte_LatestPatInfo li
on p.PatNum=li.PatNum and p.UnitNum=li.UnitNum and p.LogID = li.LastPatRec
inner join rrscsql2.arhighdollar.dbo.tblarinfoHistory ah
on ah.LogID=p.LogID and ah.iplan = li.iplan and p.PatID=ah.PatID
left join rrscsql2.ARHighDollar.dbo.tblReasonCodes rc
on ah.ReasonCode=rc.ReasonCode,
cte_EOMDenials as
(select d.* from rrscsql2.Denials.dbo.tblDenialMonthEnd d
Inner join rrscsql3.Facilities.dbo.vwFacilities f
on d.UnitNum = f.UnitNum and f.Owner like '%LifePoint%'
Inner join rrscsql2.Denials.dbo.tblDispositionDictionary t
on d.disposition=t.disposition and DispositionType like'O%'
Where datediff(mm, monthending, GETDATE()) = 1
and DATEDIFF(mm,DischDate,monthending)>2)
left join cte_EOMDenials d
on p.unitnum=d.unitnum and p.patnum = d.patnum and p.insplan=d.iplan
You have to introduce all of your CTEs first via a single WITH, and then you can use them in a final query:
with Cte_LatestPatInfo as
(select max(a.LogID) as LastPatRec, p.unitnum, p.PatNum, a.iplan from
rrscsql2.arhighdollar.dbo.tblarinfoHistory a
inner join rrscsql2.arhighdollar.dbo.tblPatInfoHistory p
on a.patID=p.patID and a.LogID=p.LogID
where a.Active = 1
and a.ReasonCode is not null
group by p.unitnum, p.PatNum, a.iplan),
cte_EOMDenials as
(select d.* from rrscsql2.Denials.dbo.tblDenialMonthEnd d
Inner join rrscsql3.Facilities.dbo.vwFacilities f
on d.UnitNum = f.UnitNum and f.Owner like '%LifePoint%'
Inner join rrscsql2.Denials.dbo.tblDispositionDictionary t
on d.disposition=t.disposition and DispositionType like'O%'
Where datediff(mm, monthending, GETDATE()) = 1
and DATEDIFF(mm,DischDate,monthending)>2)
select *,rc.Description from rrscsql2.arhighdollar.dbo.tblPatInfoHistory p
inner join cte_LatestPatInfo li
on p.PatNum=li.PatNum and p.UnitNum=li.UnitNum and p.LogID = li.LastPatRec
inner join rrscsql2.arhighdollar.dbo.tblarinfoHistory ah
on ah.LogID=p.LogID and ah.iplan = li.iplan and p.PatID=ah.PatID
left join rrscsql2.ARHighDollar.dbo.tblReasonCodes rc
on ah.ReasonCode=rc.ReasonCode
left join cte_EOMDenials d
on p.unitnum=d.unitnum and p.patnum = d.patnum and p.insplan=d.iplan
The statement does not seem to join two CTEs. If you want to join two ctes you can achieve it like the following example
;WITH CTE_1
as
( select field1, field2... from sometable),
CTE_2
as
(select field1, field2... from sometable),
select a.field1, a.field2, b.field1, b.field2
from CTE_1 a left join CTE_2 b on a.field1 = b.field1;
You will notice that the two ctes were defined first, separated by comma(,) then use in the select statement.
Please see http://msdn.microsoft.com/en-us/library/ms175972(v=sql.90).aspx for reference.