i'm facing issues migrating queries from Oracle to Postgres 15. How can i join a table that is already joined? The Oracle looks like this:
select ltd1.short_description || '_' || to_char( CASE WHEN lsd.origine_type_id = 2 THEN
lsd.data_normalizzazione_mail
ELSE lsd.data_normalizzazione_web
END, 'YYYYMMDD_HH24MISS' ) Transazione,
lkc.kit_name || '_' || lkc.doc_name Documento_Idkit_iddoc,
lp.codice_pratica Pratica,
to_char( CASE WHEN lsd.origine_type_id = 2 THEN lsd.data_normalizzazione_mail ELSE lsd.data_normalizzazione_web END, 'DD/MM/YYYY HH24:MI:SS' ) Data_Inizio,
ltd1.long_description Tipologia_Documento,
CASE WHEN lsd.origine_type_id = 2 THEN 'Digitale' ELSE 'Cartaceo' END Tipologia_Arrivo,
lsc.sla_period || ' ore' Sla,
to_char( lsd.data_fine_trans, 'DD/MM/YYYY HH24:MI:SS' ) Data_Fine_Lavorazione,
ltd2.short_description Fase_Lavorazione,
case when ((lsd.sla_period * 60) - lsd.min_elapsed) <= 0 then 999999999 else ((lsd.sla_period * 60) - lsd.min_elapsed) end Tempo_Residuo,
to_char( lsd.data_prevista_fine_sla, 'DD/MM/YYYY HH24:MI:SS' ) Data_Previsione_Chiusura_SLA,
lsd.alert_sla Alert,
lsd.stato_sla_type_id Stato_Lav,
lsd.in_sla,
lsd.out_of_sla OutSla
from gdf_suez.ld_sla_detail lsd,
gdf_suez.ls_type_description ltd1,
gdf_suez.ld_documenti ld,
gdf_suez.ls_kit_config lkc,
gdf_suez.ld_pratiche lp,
gdf_suez.ls_sla_config lsc,
gdf_suez.ls_type_description ltd2,
gdf_suez.ld_mail lm
where ltd1.context = 'DOC_TYPE_ID'
and ltd1.type_id = lsd.doc_type_id
and ld.trans_id(+) = lsd.trans_id
and lm.trans_id(+) = lsd.trans_id
and lkc.kit_id(+) = ld.kit_id
and lp.pratica_id(+) = ld.pratica_id
and lsc.doc_type_id = lsd.doc_type_id
and lsc.doc_subtype_id = lsd.doc_subtype_id
and lsc.giorno_id = 1
and ltd2.context = 'DOC_STATUS_TYPE_ID'
and ltd2.type_id = lsd.stato_sla_type_id
and decode( lsd.origine_type_id, 2, lsd.data_normalizzazione_mail, lsd.data_normalizzazione_web) between to_date( '2022-02-01', 'YYYY-MM-DD' ) and to_timestamp( '2022-02-28 23:59:59', 'YYYY-MM-DD HH24:MI:SS' )
and lsd.stato_trans_type_id >= 0
and lm.email_stato_type_id not in (6,16)
order by Alert desc, Stato_Lav, Tempo_Residuo
When i try to rewrite it on postgres, the table gdf_suez.ld_documenti ld needs to be joined to 3 tables, and one of those 3 needs to be joined to another table. How do i fix this?
Tried to rewrite the query but the error "table name "ld" specified more than once" is thrown
from gdf_suez.ld_sla_detail lsd
LEFT OUTER JOIN gdf_suez.ld_documenti ld ON lsd.trans_id = ld.trans_id
LEFT OUTER JOIN gdf_suez.ld_mail lm ON lsd.trans_id = lm.trans_id,
gdf_suez.ls_type_description ltd1,
gdf_suez.ld_documenti ld
LEFT OUTER JOIN gdf_suez.ls_kit_config lkc ON ld.kit_id = lkc.kit_id
LEFT OUTER JOIN gdf_suez.ld_pratiche lp ON ld.pratica_id = lp.pratica_id,
gdf_suez.ls_sla_config lsc,
gdf_suez.ls_type_description ltd2
It is always easy to translate from Oracle's outdated outer join syntax to the more powerful syntax of the SQL standard: put everything that has a (+) on the right side of a LEFT JOIN. So your FROM clause would become
FROM gdf_suez.ls_type_description AS ltd1
JOIN gdf_suez.ld_sla_detail AS lsd
ON ltd1.type_id = lsd.doc_type_id
JOIN gdf_suez.ls_sla_config AS lsc
ON lsc.doc_type_id = lsd.doc_type_id
AND lsc.doc_subtype_id = lsd.doc_subtype_id
JOIN gdf_suez.ls_type_description AS ltd2
ON ltd2.type_id = lsd.stato_sla_type_id
LEFT JOIN gdf_suez.ld_mail AS lm
ON lm.trans_id = lsd.trans_id
LEFT JOIN gdf_suez.ld_documenti AS ld
ON ld.trans_id = lsd.trans_id
LEFT JOIN gdf_suez.ls_kit_config AS lkc
ON lkc.kit_id = ld.kit_id
LEFT JOIN gdf_suez.ld_pratiche AS lp
ON lp.pratica_id = ld.pratica_id
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.
This question already has an answer here:
Closed 10 years ago.
Possible Duplicate:
How to eliminate NULL fields in TSQL
I am using SSMS 2008 R2 and am developing a TSQL query. I want just 1 record / profile_name. Because some of these values are NULL, I am currently doing LEFT JOINS on most of the tables. But the problem with the LEFT JOINs is that now I get > 1 record for some profile_names!
But if I change this to INNER JOINs then some profile_names are excluded entirely because they have NULL values for these columns. How do I limit the query result to just one record / profile_name regardless of NULL values? And if there are non-NULL values then I want it to choose the record with non-NULL values. Here is initial query:
select distinct
gp.group_profile_id,
gp.profile_name,
gp.license_number,
gp.is_accepting,
case when gp.is_accepting = 1 then 'Yes'
when gp.is_accepting = 0 then 'No '
end as is_accepting_placement,
mo.profile_name as managing_office,
regions.[region_description] as region,
pv.vendor_name,
pv.id as vendor_id,
at.description as applicant_type,
dbo.GetGroupAddress(gp.group_profile_id, null, 0) as [Office Address],
gsv.status_description
from group_profile gp With (NoLock)
inner join group_profile_type gpt With (NoLock) on gp.group_profile_type_id = gpt.group_profile_type_id and gpt.type_code = 'FOSTERHOME' and gp.agency_id = #agency_id and gp.is_deleted = 0
inner join group_profile mo With (NoLock) on gp.managing_office_id = mo.group_profile_id
left outer join payor_vendor pv With (NoLock) on gp.payor_vendor_id = pv.payor_vendor_id
left outer join applicant_type at With (NoLock) on gp.applicant_type_id = at.applicant_type_id and at.is_foster_home = 1
inner join group_status_view gsv With (NoLock) on gp.group_profile_id = gsv.group_profile_id and gsv.status_value = 'OPEN' and gsv.effective_date =
(Select max(b.effective_date) from group_status_view b With (NoLock)
where gp.group_profile_id = b.group_profile_id)
left outer join regions With (NoLock) on isnull(mo.regions_id, gp.regions_id) = regions.regions_id
left join enrollment en on en.group_profile_id = gp.group_profile_id
join event_log el on el.event_log_id = en.event_log_id
left join people client on client.people_id = el.people_id
As you can see, the results of the above query is 1 row / profile_name:
group_profile_id profile_name license_number is_accepting is_accepting_placement managing_office region vendor_name vendor_id applicant_type Office Address status_description Cert Date2
But now watch what happens when I add in 2 LEFT JOINs and 1 additional column:
select distinct
gp.group_profile_id,
gp.profile_name,
gp.license_number,
gp.is_accepting,
case when gp.is_accepting = 1 then 'Yes'
when gp.is_accepting = 0 then 'No '
end as is_accepting_placement,
mo.profile_name as managing_office,
regions.[region_description] as region,
pv.vendor_name,
pv.id as vendor_id,
at.description as applicant_type,
dbo.GetGroupAddress(gp.group_profile_id, null, 0) as [Office Address],
gsv.status_description,
ri.[description] as race
from group_profile gp With (NoLock)
inner join group_profile_type gpt With (NoLock) on gp.group_profile_type_id = gpt.group_profile_type_id and gpt.type_code = 'FOSTERHOME' and gp.agency_id = #agency_id and gp.is_deleted = 0
inner join group_profile mo With (NoLock) on gp.managing_office_id = mo.group_profile_id
left outer join payor_vendor pv With (NoLock) on gp.payor_vendor_id = pv.payor_vendor_id
left outer join applicant_type at With (NoLock) on gp.applicant_type_id = at.applicant_type_id and at.is_foster_home = 1
inner join group_status_view gsv With (NoLock) on gp.group_profile_id = gsv.group_profile_id and gsv.status_value = 'OPEN' and gsv.effective_date =
(Select max(b.effective_date) from group_status_view b With (NoLock)
where gp.group_profile_id = b.group_profile_id)
left outer join regions With (NoLock) on isnull(mo.regions_id, gp.regions_id) = regions.regions_id
left join enrollment en on en.group_profile_id = gp.group_profile_id
join event_log el on el.event_log_id = en.event_log_id
left join people client on client.people_id = el.people_id
left join race With (NoLock) on el.people_id = race.people_id
left join race_info ri with (nolock) on ri.race_info_id = race.race_info_id
The above query results in all of the same profile_names, but some with NULL race values:
group_profile_id profile_name license_number is_accepting is_accepting_placement managing_office region vendor_name vendor_id applicant_type Office Address status_description Cert Date2 race
Unfortunately it complicates matters that I need to join in 2 additional tables for this one additional field value (race). If I simply change the last two LEFT JOINs above to INNER JOINs then I eliminate the NULL rows above. But I also eliminate some of the profile_names:
group_profile_id profile_name license_number is_accepting is_accepting_placement managing_office region vendor_name vendor_id applicant_type Office Address status_description Cert Date2 race
Hopefully I have provided all of the details that you need for this question.
Not the most elegant solution, but one that will work:
select [stuff]
from group_profile gp With (NoLock)
inner join group_profile_type gpt With (NoLock) on gp.group_profile_type_id = gpt.group_profile_type_id and gpt.type_code = 'FOSTERHOME' and gp.agency_id = #agency_id and gp.is_deleted = 0
inner join group_profile mo With (NoLock) on gp.managing_office_id = mo.group_profile_id
join payor_vendor pv on ISNULL(gp.payor_vendor_id, 'THISVALUEWILLNEVEROCCUR') = ISNULL(pv.payor_vendor_id, 'THISVALUEWILLNEVEROCCUR')
...etc...
Biggest issue with what I posted is that you'll be doing a whole lot of table scans.
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....