K
Kalli
Guest
Hallo zusammen,
erstmal vorab:
Ich bin in Sachen SQl absoluter Anfänger und hab mir mein Wissen nach und nach selber beigebracht.
Nun habe ich das problem, dass ich eine Abfrage aus 2 verschiedene Datenbanktabellen kombinieren möchte, wobei bei der Abfrage aus einer Tabelle eine Sum-Funktion vorhanden ist.
Wie ich erfahren habe, muss ich deshlab bei der anderen Abgarge automatisch gruppieren, sonst funktioniert das wohl nicht.
Genau da liegt mein Problem. Ich habe die Abfrage nun wiefolgt zusammen gebastelt:
SELECT
pj_name,
cast(pj_nr as nvarchar(12)) as pj_nr,
OIC_User.GetUserExchangeName(PORTFOLIO_LEITER) as
PORTFOLIO_LEITER,
OIC_User.GetUserExchangeName(PJ_LEITER) as PJ_LEITER,
OIC_User.GetUserExchangeName(TEAM_CONTROLLING) as
TEAM_CONTROLLING,
STATUS,
PROJEKT_TYP,
SUM(di1+di2+di3+di4+di5) as SUMME_RATIO,
MS0_DATUM_PLAN,
MS0_DATUM_IST,
case when MS1_DATUM_FC is not null then MS1_DATUM_FC
else MS1_DATUM_PLAN end as MS1,
MS1_DATUM_IST,
case when MS2_DATUM_FC is not null then MS2_DATUM_FC
else MS2_DATUM_PLAN end as MS2,
MS2_DATUM_IST,
case when MS3_DATUM_FC is not null then MS3_DATUM_FC
else MS3_DATUM_PLAN end as MS3,
MS3_DATUM_IST,
case when MS4_DATUM_FC is not null then MS4_DATUM_FC
else MS4_DATUM_PLAN end as MS4,
MS4_DATUM_IST,
case when MS5_DATUM_FC is not null then MS5_DATUM_FC
else MS5_DATUM_PLAN end as MS5,
MS5_DATUM_IST
FROM t_oic_prodat, t_oic_prodat_ratio_ist
WHERE
projekt_typ = 'RS' or projekt_typ = 'RM' or projekt_typ = 'RT' or projekt_typ = 'RA'
and (status is null or status in ('','läuft'))
and t_oic_prodat_ratio_ist.Quartal =
'Q ' +
case when month(getdate()) between 1 and 3 then 'I'
when month(getdate()) between 4 and 6 then 'II'
when month(getdate()) between 7 and 9 then 'III'
when month(getdate()) between 10 and 12 then 'IV'
end
+ ' ' + year(getdate())
GROUP BY pj_name, pj_nr, pj_leiter, Team_controlling, status, projekttyp, ms0_datum_plan, ms0_datum_ist
ORDER BY projekt_typ
Lasst euch nicht von den einzelen Feldabfragen und Where/Case-Klauseln stören, die sind soweit korrekt.
Es geht mir darum, wie ich die Abfrage umformen muss, damit ich die Sum-Funktion nutzen kann.
Mit der aktuellen Abfrage bekomme ich folgende Fehlermeldung:
"Die 't_oic_prodat.PJ_NAME'-Spalte ist in der Auswahlliste ungültig, da sie nicht in einer Aggregatfunktion und nicht in der GROUP-BY-Klausel enthalten ist."
Kann mir da jemand bei der korrekten Umformung der Abfrage weiterhelfen?
Danke und Gruß
Kai
erstmal vorab:
Ich bin in Sachen SQl absoluter Anfänger und hab mir mein Wissen nach und nach selber beigebracht.
Nun habe ich das problem, dass ich eine Abfrage aus 2 verschiedene Datenbanktabellen kombinieren möchte, wobei bei der Abfrage aus einer Tabelle eine Sum-Funktion vorhanden ist.
Wie ich erfahren habe, muss ich deshlab bei der anderen Abgarge automatisch gruppieren, sonst funktioniert das wohl nicht.
Genau da liegt mein Problem. Ich habe die Abfrage nun wiefolgt zusammen gebastelt:
SELECT
pj_name,
cast(pj_nr as nvarchar(12)) as pj_nr,
OIC_User.GetUserExchangeName(PORTFOLIO_LEITER) as
PORTFOLIO_LEITER,
OIC_User.GetUserExchangeName(PJ_LEITER) as PJ_LEITER,
OIC_User.GetUserExchangeName(TEAM_CONTROLLING) as
TEAM_CONTROLLING,
STATUS,
PROJEKT_TYP,
SUM(di1+di2+di3+di4+di5) as SUMME_RATIO,
MS0_DATUM_PLAN,
MS0_DATUM_IST,
case when MS1_DATUM_FC is not null then MS1_DATUM_FC
else MS1_DATUM_PLAN end as MS1,
MS1_DATUM_IST,
case when MS2_DATUM_FC is not null then MS2_DATUM_FC
else MS2_DATUM_PLAN end as MS2,
MS2_DATUM_IST,
case when MS3_DATUM_FC is not null then MS3_DATUM_FC
else MS3_DATUM_PLAN end as MS3,
MS3_DATUM_IST,
case when MS4_DATUM_FC is not null then MS4_DATUM_FC
else MS4_DATUM_PLAN end as MS4,
MS4_DATUM_IST,
case when MS5_DATUM_FC is not null then MS5_DATUM_FC
else MS5_DATUM_PLAN end as MS5,
MS5_DATUM_IST
FROM t_oic_prodat, t_oic_prodat_ratio_ist
WHERE
projekt_typ = 'RS' or projekt_typ = 'RM' or projekt_typ = 'RT' or projekt_typ = 'RA'
and (status is null or status in ('','läuft'))
and t_oic_prodat_ratio_ist.Quartal =
'Q ' +
case when month(getdate()) between 1 and 3 then 'I'
when month(getdate()) between 4 and 6 then 'II'
when month(getdate()) between 7 and 9 then 'III'
when month(getdate()) between 10 and 12 then 'IV'
end
+ ' ' + year(getdate())
GROUP BY pj_name, pj_nr, pj_leiter, Team_controlling, status, projekttyp, ms0_datum_plan, ms0_datum_ist
ORDER BY projekt_typ
Lasst euch nicht von den einzelen Feldabfragen und Where/Case-Klauseln stören, die sind soweit korrekt.
Es geht mir darum, wie ich die Abfrage umformen muss, damit ich die Sum-Funktion nutzen kann.
Mit der aktuellen Abfrage bekomme ich folgende Fehlermeldung:
"Die 't_oic_prodat.PJ_NAME'-Spalte ist in der Auswahlliste ungültig, da sie nicht in einer Aggregatfunktion und nicht in der GROUP-BY-Klausel enthalten ist."
Kann mir da jemand bei der korrekten Umformung der Abfrage weiterhelfen?
Danke und Gruß
Kai