TSQL Combine Multiple rows and columns - tsql

I have a sql server 2008 stored proc with joins which returns multiple rows:
default ~/ / NULL NULL NULL Lorem
default ~/ / NULL NULL NULL Ipsum
I would like to return these two rows as one with the last column combined:
default ~/ / NULL NULL NULL Lorem, Ipsum
My Procedure is below
BEGIN
SET NOCOUNT ON;
SELECT
p.display_name AS Name,
p.url AS Url,
ISNULL(REPLACE(parentPage.url,'~','') + parentPage.alias,REPLACE(p.url,'~','')) as ParentPageURL,
p.page_image AS PageImage,
p.synopsis AS Synopsis,
p.metatitle AS Metatitle,
t.tag_name as tag
FROM page p
LEFT JOIN page parentPage on parentPage.id = p.parentid
LEFT JOIN page_features pf on p.id = pf.pageid and (pf.feature_type = 'TEXT' OR pf.feature_type = 'BLOG')
JOIN dbo.tag_collection_tag tc on tc.tag_collection_id = p.tag_collection_id
JOIN dbo.tag t on t.id = tc.tag_id
JOIN dbo.[Split](UPPER(#tags),',') Split on UPPER(t.tag_name) like '%' + split.Data + '%'
WHERE p.status = 'PUBLISHED'
AND p.include_in_nav = 1
AND (p.pagelevel = #level OR #level IS NULL)
AND (p.section_id = #sectionId OR #sectionId IS NULL)
ORDER BY ISNULL(REPLACE(parentPage.url,'~','') + parentPage.alias,REPLACE(p.url,'~',''))
END
Thank you.

Note if you have a column id in table page. It should be used instead of display_name
;WITH a as
(
SELECT
/*p.id,*/
p.display_name AS Name,
p.url AS Url,
ISNULL(REPLACE(parentPage.url,'~','') + parentPage.alias,REPLACE(p.url,'~','')) as ParentPageURL,
p.page_image AS PageImage,
p.synopsis AS Synopsis,
p.metatitle AS Metatitle,
t.tag_name as tag,
ISNULL(REPLACE(parentPage.url,'~','')
+ parentPage.alias,REPLACE(p.url,'~','')) XXX
FROM page p
LEFT JOIN page parentPage on parentPage.id = p.parentid
LEFT JOIN page_features pf on p.id = pf.pageid and (pf.feature_type = 'TEXT' OR pf.feature_type = 'BLOG')
JOIN dbo.tag_collection_tag tc on tc.tag_collection_id = p.tag_collection_id
JOIN dbo.tag t on t.id = tc.tag_id
JOIN dbo.[Split](UPPER(#tags),',') Split on UPPER(t.tag_name) like '%' + split.Data + '%'
WHERE p.status = 'PUBLISHED'
AND p.include_in_nav = 1
AND (p.pagelevel = #level OR #level IS NULL)
AND (p.section_id = #sectionId OR #sectionId IS NULL)
)
SELECT Name, Url, ParentPageURL, PageImage, Synopsis, Metatitle
,STUFF((
select ',' + [tag]
from a t1
-- I assume display_name is unique. I would use page.id,
-- but I am not sure you have that column
-- t1.id = t.id
where t1.display_name = t.display_name
for xml path(''), type
).value('.', 'varchar(max)'), 1, 1, '') [tags]
from a t
group by Name, Url, ParentPageURL, PageImage, Synopsis, Metatitle
ORDER BY XXX

Related

Refine data elements using having clause tsql

I'm trying to pull a dataset that returns records ONLY when there are two QUALIFERs present. I've tried left joins, populating data in temp tables then manipulating something, then numerous having clauses (resulting in subquery selects, and additional groups). I would appreciate any assistance on what I can do further.
Query:
Select E, CASE WHEN QUALIFER = '1' THEN 'NAME1' WHEN QUALIFER = '2' then 'NAME2' ELSE 'FINALNAME' END AS TYPE, count(rt.ID) 'Number '
from TABLE_ONE co (nolock)
join TABLE_TWO rt (nolock)
on co.ID = rt.ID
where co.E in (select * from #tempEmail)
AND convert(date,co.INSERTED_TIMESTAMP)between '1/1/2020' and '8/15/2020'
AND TRANS_STATUS = 'APPROVED'
group by E, QUALIFER
order by E, QUALIFER
Current resultset:
E TYPE Number
FAKEEMAIL1#Gmail NAME1 1
FAKEEMAIL1#Gmail NAME2 1
otheremailj#gmail.com Name1 21
Desired resultset:
E TYPE Number
FAKEEMAIL1#Gmail NAME1 1
FAKEEMAIL1#Gmail NAME2 1
Thank you.
Let's try the below query. I used a temp table to make things more simple for my mind.
if object_id('tempdb.dbo.#email') is not null drop table #email
create table #email
(
email varchar(50),
typeValue varchar(15),
Number int
)
insert into #email(email, typeValue, Number)
Select
E,
CASE WHEN QUALIFER = '1' THEN 'NAME1' WHEN QUALIFER = '2' then 'NAME2' ELSE 'FINALNAME' END AS TYPE,
count(rt.ID) 'Number '
from TABLE_ONE co (nolock)
join TABLE_TWO rt (nolock)
on co.ID = rt.ID
where co.E in (select * from #tempEmail)
AND convert(date,co.INSERTED_TIMESTAMP)between '1/1/2020' and '8/15/2020'
AND TRANS_STATUS = 'APPROVED'
group by E, QUALIFER
select a.email, a.typeValue
from #email a
inner join
(
select email, typeValue, rank() over (partition by email order by typeValue) as typeCount
from #email t
) as b
on b.email = a.email
and b.typeCount > 1

Checking empty column values in case when and ignoring them

I wrote the following query to check duplicates.
select s.*,m.IsMember_Ind,
case when REPLACE(s.[ Owner Mobile],' ','')
in (select cd.Mobile
from Company_Detail cd
inner join MEMBERSHIP m
on cd.Company_ID = m.Company_ID
where m.IsMember_Ind = 1)
then 'Match'
else ' ' end as OwnerMobileMatch,
case when REPLACE(s.[ Contact Number],' ','')
in (select cd.Mobile
from Company_Detail cd
inner join MEMBERSHIP m
on cd.Company_ID = m.Company_ID
where m.IsMember_Ind = 1)
then 'Match' else ' ' end as ContactMobileMatch
from COMPANY c
inner join surreynonmembers s
on c.TTR_ID = s.[Company ID]
left outer join MEMBERSHIP m
on m.Company_ID = c.Company_ID
My problem is, the case statement returns as a match when finds an empty value which I do not need. How can I modify this query to return if there is only a value?
Have you tried this?
GO
SELECT s.*
,m.IsMember_Ind
,CASE
WHEN REPLACE(s.[ Owner Mobile], ' ', '') IN (
SELECT cd.Mobile
FROM Company_Detail cd
INNER JOIN MEMBERSHIP m ON cd.Company_ID = m.Company_ID
WHERE m.IsMember_Ind = 1
AND ISNULL(s.[ Owner Mobile], '') <> ''
)
THEN 'Match'
ELSE ' '
END AS OwnerMobileMatch
,CASE
WHEN REPLACE(s.[ Contact Number], ' ', '') IN (
SELECT cd.Mobile
FROM Company_Detail cd
INNER JOIN MEMBERSHIP m ON cd.Company_ID = m.Company_ID
WHERE m.IsMember_Ind = 1
AND ISNULL(s.[ Contact Number], '')<> ''
)
THEN 'Match'
ELSE ' '
END AS ContactMobileMatch
FROM COMPANY c
INNER JOIN surreynonmembers s ON c.TTR_ID = s.[Company ID]
LEFT JOIN MEMBERSHIP m ON m.Company_ID = c.Company_ID
GO

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

I get error (The multi-part identifier "f.FormID" could not be bound.) running this query:
select f.FormID, f.Title, fv.UserName
from Forms f join (
SELECT FormID
FROM Reports
WHERE (ReportID = #ReportID)
UNION
SELECT FormRelations.ForigenFormID
FROM FormRelations INNER JOIN
Forms ON FormRelations.ForigenFormID = Forms.FormID
WHERE (FormRelations.PrimaryFormID =
(SELECT FormID
FROM Reports
WHERE (ReportID = #ReportID)))
) ids
on f.FormID = ids.FormID
LEFT OUTER JOIN (select top 1 UserName, FormID from FormValues where FormID = f.FormID and UserName = #UserName) fv
ON f.FormID = fv.FormID
Please someone help me :(
#bluefeet:
I want such a result:
01304636-FABE-4A3E-9487-A14B012F9A61 item_1 1234567890
C0455E97-788A-4305-876A-A15000CFE928 item_2 1234567890
7719F37E-7021-4ABD-91ED-A15301830324 item_3 1234567890
If you need to use your alias inside of your subquery like that, you might want to look at using the APPLY operator:
select f.FormID, f.Title, fv.UserName
from Forms f
join
(
SELECT FormID
FROM Reports
WHERE (ReportID = #ReportID)
UNION
SELECT FormRelations.ForigenFormID
FROM FormRelations
INNER JOIN Forms
ON FormRelations.ForigenFormID = Forms.FormID
WHERE (FormRelations.PrimaryFormID = (SELECT FormID
FROM Reports
WHERE (ReportID = #ReportID)))
) ids
on f.FormID = ids.FormID
CROSS APPLY
(
select top 1 UserName, FormID
from FormValues
where FormID = f.FormID
and UserName = #UserName
) fv
Or you can use row_number():
select f.FormID, f.Title, fv.UserName
from Forms f
join
(
SELECT FormID
FROM Reports
WHERE (ReportID = #ReportID)
UNION
SELECT FormRelations.ForigenFormID
FROM FormRelations
INNER JOIN Forms
ON FormRelations.ForigenFormID = Forms.FormID
WHERE (FormRelations.PrimaryFormID = (SELECT FormID
FROM Reports
WHERE (ReportID = #ReportID)))
) ids
on f.FormID = ids.FormID
LEFT JOIN
(
select UserName, FormID,
ROW_NUMBER() over(PARTITION by FormID, UserName order by FormID) rn
from FormValues
where UserName = #UserName
) fv
on f.FormID = fv.FormID
and fv.rn = 1

i am geting error: PLS-00402: alias required in SELECT list of cursor to avoid duplicate column names

I have created this procedure with select data prom different tables
and populate it into one table. i am getting error:"PLS-00402: alias
required in SELECT list of cursor to avoid duplicate column names"
while compling the code
create or replace procedure hrps.Employeeall
is
cursor EMA_FILL_EMPL_ALL
IS
SELECT DISTINCT base.eme_perno " EMPL BASE PNO",
CAR.CAR_COMP_CD "COMP CODE",
PER.EPR_SALUTATION,
PER.EPR_FST_NAME,
PER.EPR_MID_NAME,
PER.EPR_LST_NAME,
TRIM(per.EPR_SALUTATION) || ' '||TRIM(per.EPR_FST_NAME) || ' ' || TRIM(per.EPR_MID_NAME) || ' ' || TRIM(per.EPR_LST_NAME) "Name",
BASE.EME_DOB,
per.epr_gender "GENDER",
NULL z1,
PER.EPR_DIFF_ABLE,
PER.EPR_DIFF_ABLE_DESC,
BASE.EME_BLOOD_GRP,
PER.EPR_AFF_ACT,
DOJ.idt_dt,
BASE.EME_CADRE,
C3.IRC_DESC cd3,
car.car_emp_class,
CAR.CAR_EMP_TYP,
BASE.EME_EMPL_STATUS,
BASE.EME_SOURCE_EMPLMNT,
CAR.CAR_PYRL,
PYRL.IPY_PYRL_DESC,
car.car_dept_cd "DEPT CODE",
org_dept.oro_desc "DEPT DESC",
car.car_sec_cd "SECTION CODE",
org_sec.oro_desc "SECTION DESC",
car.car_desgn_cd "DESGN CODE",
DES.IDS_DESGN_DESC "DESGN DESC",
CAR.CAR_PER_GRADE_CD,
CAR.CAR_SUB_GRADE_CD,
NULL z2,
NULL z3,
NULL z4,
NULL z5,
CAR.CAR_PYRL_AREA,
C1.IRC_DESC cd1,
CAR.CAR_COST_CENT_CD,
C2.IRC_DESC cd2,
NULL z6,
NULL z7,
DOS.IDT_DT,
CAR_SEP.CAR_ACTION_RSN,
C4.IRC_DESC cd4,
PDT.IDT_DT,
EDR.IDT_DT,
NULL z8,
PROM.IDT_DT,
INC.IDT_DT,
NULL z9,
NULL z10,
C5.IRC_DESC cd5,
car.car_exec_cd "EXEC HEAD",
org_exe.oro_desc "EXEC HEAD DESC",
car.car_grp_cd "GROUP CODE",
org_grp.oro_desc "GROUP DESC",
car.car_pu_cd " PU CODE",
org_pu.idp_pu_desc "PU DESC",
car.car_position_id "POSITION ID",
NULL z11,
NULL z12,
NULL z13,
NULL z14,
FATHER.FML_FSTNAME || ' ' || FATHER.FML_MIDNAME || ' ' || FATHER.FML_LSTNAME F_NAME,
SPOUCE.FML_FSTNAME || ' ' || SPOUCE.FML_MIDNAME || ' ' || SPOUCE.FML_LSTNAME S_NAME,
TRGSD.IDT_DT,
TRGED.IDT_DT,
NULL z15,
NULL z16,
NULL z17,
NULL z18,
PAN.EID_ID,
PHONE.EMC_CONTACT,
EMAIL.EMC_CONTACT,
PER.EPR_RELIGION,
PER.EPR_NATIVE_STATE,
PER.EPR_NATIONALITY,
NULL z19,
NULL z20,
NULL z21,
SYSDATE date1,
'157068' num1,
SYSDATE date2,
'157068' num2
fROM t_empl_base base
LEFT OUTER JOIN
t_ir_em_career_dtls car
ON base.eme_perno = car.car_eme_perno
AND car.car_end_dt = '31-dec-9999'
LEFT OUTER JOIN
t_ir_em_career_dtls car_SEP
ON base.eme_perno = car_SEP.car_eme_perno
AND CAR_SEP.CAR_ACTION_TYPE ='SP'
LEFT OUTER JOIN
t_ir_em_personal per
ON base.eme_perno = per.epr_eme_perno
AND per.epr_end_dt = '31-dec-9999'
LEFT OUTER JOIN
T_IR_DESGN DES
ON DES.IDS_DESGN_CODE= CAR.CAR_DESGN_CD
AND DES.IDS_LOCATION = CAR.CAR_LOC_CD
AND DES.IDS_END_DT='31-DEC-9999'
LEFT OUTER JOIN
t_ir_em_impdt pdt
ON base.eme_perno = pdt.idt_eme_perno
AND pdt.idt_type = '03'
LEFT OUTER JOIN
t_ir_em_impdt DOJ
ON base.eme_perno = DOJ.idt_eme_perno
AND DOJ.idt_type = '02'
LEFT OUTER JOIN
t_ir_em_impdt DOS
ON base.eme_perno = DOS.idt_eme_perno
AND DOS.idt_type = '04'
LEFT OUTER JOIN
t_ir_em_impdt EDR
ON base.eme_perno = EDR.idt_eme_perno
AND EDR.idt_type = '07'
LEFT OUTER JOIN
t_ir_em_impdt PROM
ON base.eme_perno = PROM.idt_eme_perno
AND PROM.idt_type = '08'
LEFT OUTER JOIN
t_ir_em_impdt INC
ON base.eme_perno = INC.idt_eme_perno
AND INC.idt_type = '09'
LEFT OUTER JOIN
t_ir_em_impdt TRGSD
ON base.eme_perno = TRGSD.idt_eme_perno
AND TRGSD.idt_type = '12'
LEFT OUTER JOIN
t_ir_em_impdt TRGED
ON base.eme_perno = TRGSD.idt_eme_perno
AND TRGSD.idt_type = '13'
LEFT OUTER JOIN
T_IR_EM_FAMILY FATHER
ON FATHER.FML_EME_PERNO= BASE.EME_PERNO
AND FATHER.FML_TYPE ='06'
LEFT OUTER JOIN
T_IR_EM_FAMILY SPOUCE
ON SPOUCE.FML_EME_PERNO= BASE.EME_PERNO
AND SPOUCE.FML_TYPE IN ('01','02')
LEFT OUTER JOIN
T_IR_PYRL PYRL
ON CAR.CAR_PYRL = PYRL.IPY_PYRL_NO
AND PYRL.IPY_END_DATE = '31-DEC-9999'
AND PYRL.IPY_LOCN_CD = CAR.CAR_LOC_CD
AND PYRL.IPY_VALID_TAG ='Y'
LEFT OUTER JOIN
t_ir_codes c2
ON TRIM (CAR.CAR_COST_CENT_CD ) = c2.irc_code
AND c2.irc_type = 'COSTC'
LEFT OUTER JOIN
t_ir_codes c1
ON TRIM (CAR.CAR_PYRL_AREA ) = c1.irc_code
AND c1.irc_type = 'PYARA'
LEFT OUTER JOIN
t_ir_codes c3
ON BASE.EME_CADRE = c3.irc_code
AND c3.irc_type = 'CADRE'
LEFT OUTER JOIN
t_ir_codes c4
ON CAR_SEP.CAR_ACTION_RSN = c4.irc_code
AND c4.irc_type = 'SEPAR'
LEFT OUTER JOIN
t_ir_codes c5
ON CAR.CAR_COMP_CD = c5.irc_code
AND c5.irc_type = 'COMP'
LEFT OUTER JOIN
T_IR_EM_ID PAN
ON PAN.EID_EME_PERNO=BASE.EME_PERNO
AND PAN.EID_ID_CODE= '02'
LEFT OUTER JOIN
T_IR_EM_CONTACT PHONE
ON PHONE.EMC_EME_PERNO =BASE.EME_PERNO
AND PHONE.EMC_CONTACT_TYPE= '04'
AND PHONE.EMC_END_DATE='31-DEC-9999'
LEFT OUTER JOIN
T_IR_EM_CONTACT EMAIL
ON EMAIL.EMC_EME_PERNO =BASE.EME_PERNO
AND EMAIL.EMC_CONTACT_TYPE= '03'
AND EMAIL.EMC_END_DATE='31-DEC-9999'
LEFT OUTER JOIN
(SELECT DISTINCT oro_object_id, oro_desc
FROM t_org_object o
WHERE o.oro_str_type = 'IRSTR'
AND o.oro_end_date = '31-DEC-9999'
AND o.oro_type = 'EX') org_exe
ON org_exe.oro_object_id = car.car_exec_cd
LEFT OUTER JOIN
(SELECT DISTINCT oro_object_id, oro_desc
FROM t_org_object o
WHERE o.oro_str_type = 'IRSTR'
AND o.oro_end_date = '31-DEC-9999'
AND o.oro_type = 'GR') org_grp
ON org_grp.oro_object_id = car.car_grp_cd
LEFT OUTER JOIN
(SELECT DISTINCT oro_object_id, oro_desc
FROM t_org_object o
WHERE o.oro_str_type = 'IRSTR'
AND o.oro_end_date = '31-DEC-9999'
AND o.oro_type = 'DP') org_dept
ON org_dept.oro_object_id = car.car_dept_cd
LEFT OUTER JOIN
(SELECT DISTINCT oro_object_id, oro_desc
FROM t_org_object o
WHERE o.oro_str_type = 'IRSTR'
AND o.oro_end_date = '31-DEC-9999'
AND o.oro_type = 'SE') org_sec
ON org_sec.oro_object_id = car.car_sec_cd
LEFT OUTER JOIN
(SELECT DISTINCT idp_pu_code, idp_pu_desc
FROM t_ir_dept_pu o
WHERE o.idp_end_dt = '31-DEC-9999') org_pu
ON org_pu.idp_pu_code = car.car_pu_cd
WHERE base.eme_empl_status = '1';
ct EMA_FILL_EMPL_ALL%ROWTYPE;
BEGIN
FOR CT IN EMA_FILL_EMPL_ALL
LOOP
INSERT INTO T_EMPL_COMN (
EMA_PERNO,
EMA_COMP_CD,
EMA_SALUTATION,
EMA_FST_NAME,
EMA_MID_NAME,
EMA_LST_NAME,
EMA_ENAME,
EMA_BIRTH_DT,
EMA_GENDER,
EMA_MARITAL_STATUS,
EMA_DIFF_ABLE_CD,
EMA_DIFF_ABLE_DESC,
EMA_BLOODGRP,
EMA_AFFIRMATIVE_ACTION_CD,
EMA_JOINING_DT,
EMA_CADRE,
EMA_CADRE_DESC,
EMA_EMP_CLASS,
EMA_EMP_TYPE,
EMA_EMPL_STATUS,
EMA_SOURCE_EMPLMNT,
EMA_PYRL,
EMA_PYRL_DESC,
EMA_DEPT_CD,
EMA_DEPT_DESC,
EMA_SECTION_CD,
EMA_SECTION_DESC,
EMA_DESGN_CD,
EMA_DESGN_DESC,
EMA_EMPL_PGRADE,
EMA_EMPL_SGRADE,
EMA_PERS_AREA,
EMA_PERS_AREA_DESC,
EMA_PERS_SUBAREA,
EMA_PERS_SUBAREA_DESC,
EMA_PYRL_AREA,
EMA_PYRL_AREA_DESC,
EMA_COST_CENTER_CD,
EMA_COST_CENTER_DESC,
EMA_PROFIT_CENTER_CD,
EMA_PROFIT_CENTER_DESC,
EMA_DISCH_DT,
EMA_DISCH_RSN_CD,
EMA_DISCH_RSN_DESC,
EMA_CS_DATE,
EMA_EXP_RETIRE_DT,
EMA_TRF_DT,
EMA_PROM_DT,
EMA_INCR_DT,
EMA_UNION_IND,
EMA_UNION_DESC,
EMA_COMP_DESC,
EMA_EXEC_HEAD,
EMA_EXEC_HEAD_DESC,
EMA_GROUP,
EMA_GROUP_DESC,
EMA_PU,
EMA_PU_DESC,
EMA_POSITION_ID,
EMA_REPORTING_TO_PNO,
EMA_DEPT_HEAD_PNO,
EMA_PERS_EXEC_PNO,
EMA_REF_PNO,
EMA_FATHERS_NAME,
EMA_SPOUSE_NAME,
EMA_TRG_ST_DT,
EMA_TRG_EN_DT,
EMA_FPF_ACNO,
EMA_EFBS_IND,
EMA_BANK_ACNO,
EMA_BANK_CD,
EMA_PANNO,
EMA_PHONE_NO,
EMA_EMAIL_ID,
EMA_RELIGION,
EMA_NATIVE_STATE,
EMA_NATIONALITY,
EMA_CHK_HOUSE,
EMA_WRK_CHK_HOUSE,
EMA_PYRL_STOP_DATE,
EMA_ENTRY_DATE,
EMA_ENTRY_USER,
EMA_LAST_UPDATE_DATE,
EMA_LAST_UPDATE_USER
)
VALUES( CT.base.eme_perno ,
CT.CAR.CAR_COMP_CD,
CT.PER.EPR_SALUTATION,
CT.PER.EPR_FST_NAME,
CT.PER.EPR_MID_NAME,
CT.PER.EPR_LST_NAME,
CT.HRPS.POP_NAME_FETCH(BASE.EME_PERNO),
CT.BASE.EME_DOB,
CT.per.epr_gender,
NULL,
CT.PER.EPR_DIFF_ABLE,
CT.PER.EPR_DIFF_ABLE_DESC,
CT.BASE.EME_BLOOD_GRP,
CT.PER.EPR_AFF_ACT,
CT.DOJ.idt_dt,
CT.BASE.EME_CADRE,
CT.C3.IRC_DESC,
CT.car.car_emp_class,
CT.CAR.CAR_EMP_TYP,
CT.BASE.EME_EMPL_STATUS,
CT.BASE.EME_SOURCE_EMPLMNT,
CT.CAR.CAR_PYRL,
CT.PYRL.IPY_PYRL_DESC,
CT.car.car_dept_cd ,
CT.org_dept.oro_desc ,
CT.car.car_sec_cd ,
CT.org_sec.oro_desc ,
CT.car.car_desgn_cd ,
CT.DES.IDS_DESGN_DESC ,
CT.CAR.CAR_PER_GRADE_CD,
CT.CAR.CAR_SUB_GRADE_CD,
NULL,
NULL,
NULL,
NULL,
CT.CAR.CAR_PYRL_AREA,
CT.C1.IRC_DESC,
CT.CAR.CAR_COST_CENT_CD,
CT.C2.IRC_DESC,
NULL,
NULL,
CT.DOS.IDT_DT,
CT.CAR_SEP.CAR_ACTION_RSN,
CT.C4.IRC_DESC,
CT.PDT.IDT_DT,
CT.EDR.IDT_DT,
NULL,
CT.PROM.IDT_DT,
CT.INC.IDT_DT,
NULL,
NULL,
CT.C5.IRC_DESC,
CT.car.car_exec_cd,
CT.org_exe.oro_desc ,
CT.car.car_grp_cd ,
CT.org_grp.oro_desc ,
CT.car.car_pu_cd ,
CT.org_pu.idp_pu_desc ,
CT.car.car_position_id,
NULL,
NULL,
NULL,
NULL,
CT.F_NAME,
CT.S_NAME,
CT.TRGSD.IDT_DT,
CT.TRGED.IDT_DT,
NULL,
NULL,
NULL,
NULL,
CT.PAN.EID_ID,
CT.PHONE.EMC_CONTACT,
CT.EMAIL.EMC_CONTACT,
CT.PER.EPR_RELIGION,
CT.PER.EPR_NATIVE_STATE,
CT.PER.EPR_NATIONALITY,
NULL,
NULL,
NULL,
SYSDATE,
'157068',
SYSDATE,
'157068');
END LOOP;
END Employeeall;
you have to make sure each column has a different alias when its in a stored proc.
ie i see duplicates:
DOJ.idt_dt,
DOS.IDT_DT,
PDT.IDT_DT,
EDR.IDT_DT,
PROM.IDT_DT,
INC.IDT_DT,
TRGSD.IDT_DT,
TRGED.IDT_DT,
just add a unique alias for each one like you've done for some of the other columns.

T-SQL Nested Subquery

I want to place this working code within a SQL Statement, OR do I need to perform a UDF.
The result set is a one line concatenation, and I want it to be place in every one of the overall result set lines.
----
MAIN QUERY
SELECT
H.CONNECTION_ID,
H.SEQUENTIAL_NO,
H.INVOICE_NUMBER,
H.INVOICE_DATE,
H.LAST_INVOICE_NUMBER,
H.LAST_INVOICE_DATE,
CAST(CASE
WHEN H.COLLECT_DEPOSIT = 1 THEN '-'
ELSE CAST(H.PAYMENT_DUE_DATE AS NVARCHAR(20))
END AS SMALLDATETIME) AS PAYMENT_DUE,
H.JOB_NUMBER,
H.CUST_JOB_NUMBER,
HDR.SALES_PERSON,
H.INSIDE_SALES_PERSON,
H.IS_LAST_INVOICE,
CASE
WHEN H.COLLECT_DEPOSIT = 1 THEN 'CASH'
ELSE H.PAYMENT_TERMS_DESCRIPTION
END AS PAYMENT_TERMS,
H.PRINTED,
H.NOTES,
CUR.ID,
CUR.CODE,
CASE CUR.CODE
WHEN 'USD' THEN '001-106624-211'
WHEN 'EUR' THEN '001-106624-101'
WHEN 'GBP' THEN '001-106624-100'
ELSE '001-106624-001'
END AS BANK_ACCT,
CUR.EXCHANGE_RATE,
H.BILL_CONTACT,
H.CUST_ACCOUNT,
H.CUST_NAME,
H.CUST_ADDR1,
H.CUST_ADDR2,
H.CUST_CITY,
H.CUST_STATE,
H.CUST_ZIP,
H.CONTACT_PHONE_NUMBER,
H.CONTACT_PHONE_NUMBER2,
H.ORDERED_BY_CONTACT,
H.SHIP_TO_NAME,
H.SHIP_TO_ADDR1,
H.SHIP_TO_ADDR2,
H.SHIP_TO_CITY,
H.SHIP_TO_STATE,
H.SHIP_TO_ZIP,
H.SITE_PHONE_NUMBER,
H.SITE_PHONE_NUMBER2,
H.OFFICE_NAME,
H.OFFICE_ADDR1,
H.OFFICE_ADDR2,
H.OFFICE_CITY,
H.OFFICE_STATE,
H.OFFICE_ZIP,
H.OFFICE_PHONE_NUMBER,
H.OFFICE_FAX_NUMBER,
H.DELIVERY_TICKET_NUMBER,
H.PO_NUMBER,
H.DUMMY_INVOICE_TEXT,
(SELECT MESSAGE FROM REPORT_MESSAGES WHERE CODE = 'INVOICE') ADVERT_MESSAGE,
(SELECT MAX(DISCOUNT_PERCENTAGE) FROM PRTINVITEM I2 WHERE I2.CONNECTION_ID = H.CONNECTION_ID AND I2.INVOICE_NUMBER = H.INVOICE_NUMBER) AS MAX_DISCOUNT,
I.ITEM,
I.DESCRIPTION,
I.QUANTITY,
I.UNIT_OF_MEASURE,
I.MINIMUM_CHARGE,
I.WEEKLY_CHARGE,
I.MONTHLY_CHARGE,
I.START_OF_BILLING_PERIOD,
I.END_OF_BILLING_PERIOD,
I.DAYS_USED,
I.WEEKS_USED,
I.DISCOUNT_PERCENTAGE,
I.TAX_CODE_FOR_ITEM,
I.INVENTORY_TYPE,
I.BILLING_LOGIC_TYPE,
I.ACTUAL_WEEKLY_CHARGE_USED,
I.DAYS_IN_ACTUAL_WEEKLY_CHARGE,
II.CHARGEABLE_DAYS,
II.CHARGEABLE_WEEKS,
II.CHARGEABLE_MONTHS,
II.FREE_DAYS_THIS_INVOICE,
CNV.TOTAL_NET_VALUE,
CNV.TOTAL_TAX_VALUE,
CNV.TOTAL_GROSS_VALUE,
CNV.TOTAL_GROSS_VALUE_NS,
CNV.NET_LINE_VALUE,
CMP.EMAIL_ADDRESS
FROM (PRTINVHDR H INNER JOIN PRTINVITEM I ON H.CONNECTION_ID = I.CONNECTION_ID AND H.INVOICE_NUMBER = I.INVOICE_NUMBER)
INNER JOIN INVOICEHDR HDR ON I.INVOICE_NUMBER = HDR.INVNO
INNER JOIN CUSTOMERS CST ON H.CUST_ACCOUNT = CST.CUSTNUM
INNER JOIN JOB JOB ON H.JOB_NUMBER = JOB.JOBNUM
INNER JOIN CURRENCY CUR ON HDR.CURRENCY_ID = CUR.ID
INNER JOIN VWCURRENCYCONVERSION CNV ON I.CONNECTION_ID = CNV.CONNECTION_ID AND I.INVC_UCOUNTER = CNV.INVC_UCOUNTER
INNER JOIN COMPANY CMP ON H.OFFICE_CODE = CMP.OFFICE
INNER JOIN INVOICEITEM II ON I.INVOICE_NUMBER = II.INVNO AND I.INVC_UCOUNTER = II.INVC_UCOUNTER
ORDER BY
H.SEQUENTIAL_NO,
I.PRINT_SEQUENCE
ASC
----
COALESCE QUERY
DECLARE
#DTICKET NVARCHAR(20),
#PUMPCATEGORYNAME NVARCHAR(3999)
SET #DTICKET = ''
SET #PUMPCATEGORYNAME = NULL
(SELECT
#DTICKET = DTICKET,
#PUMPCATEGORYNAME = COALESCE(#PUMPCATEGORYNAME + ', ', '' ) + PUMPCATEGORYNAME
FROM (SELECT
BHDR.DTICKET,
SCD.PUMPCATEGORYNAME
FROM PRTTICKHDR PHDR
INNER JOIN BIDHDR BHDR ON PHDR.DELIV_TICKET_NUMBER = BHDR.DTICKET
INNER JOIN PRTTICKITEM PITM ON PHDR.CONNECTION_ID = PITM.CONNECTION_ID AND PHDR.DELIV_TICKET_NUMBER = PITM.DELIV_TICKET_NUMBER
LEFT JOIN SUBCATEGORYDESCRIPTION SCD ON PITM.ITEM = SCD.PUMPCATEGORY
WHERE SCD.PUMPCATEGORYNAME IS NOT NULL)
SUBCATEGORYDESCRIPTION)
SELECT #DTICKET, #PUMPCATEGORYNAME
Not really sure what you are asking for but you can doing something along the lines of
Select col1 + ', ' + col2 + ', ' + col3 etc....