Ich habe einen Code, der die gewünschte Ausgabe für ein "bewegendes" Universum ergibt, in dem es auf jeden Punkt schaut und mir die Informationen gibt. Ich möchte eine andere Abfrage haben, die die gleiche Ausgabe aber liefert für eine andere Auswahl ein "aktuelles" Universum.SQL - Auswahl innerhalb des Falls, wenn
Ein aktuelles Universum würde die Summen genauso machen wie jetzt, aber nur für Unternehmen, die die Kriterien zum spätesten Datum in der Datenbank erfüllen.
Momentan gibt der Code EBIT/Sales 2015 für Unternehmen mit Market_Cap zwischen 0 und 10000 2015 und so weiter, aber ich möchte lieber, dass es EBIT/Sales 2015 für Unternehmen mit Market_Cap zwischen 0 und 10000 (aktuell date_month in Market_Cap)
ich Microsoft SQL Server Management Studio bin mit
ich weitere Kriterien in der Summe einzufügen habe versucht (Fall, wenn ... dann) Syntax wie „Und c.company_id in (company_id auswählen von Market_cap wo Market_Cap zwischen 0 und 10000 und Datum = '2017-06-30)), aber ich bekomme Fehler:
Eine Aggregatfunktion für einen Ausdruck, der ein Aggregat oder eine Unterabfrage enthält, kann nicht ausgeführt werden.
-Code jetzt:
select m.date_month
,sum(case when y.date_year = 2015 AND c.Country_Id in (4,5,6) AND c.factSet_Level1_Id between 1 and 100 AND mm.Market_Cap between 0 and 10000 then n.EBIT end)/sum(case when y.date_year = 2015 AND c.Country_Id in (4,5,6) AND c.factSet_Level1_Id between 1 and 100 AND mm.Market_Cap between 0 and 10000 then s.Sales end) as 'EBIT/Sales 2015'
,sum(case when y.date_year = 2016 AND c.Country_Id in (4,5,6) AND c.factSet_Level1_Id between 1 and 100 AND mm.Market_Cap between 0 and 10000 then n.EBIT end)/sum(case when y.date_year = 2016 AND c.Country_Id in (4,5,6) AND c.factSet_Level1_Id between 1 and 100 AND mm.Market_Cap between 0 and 10000 then s.Sales end) as 'EBIT/Sales 2016'
,sum(case when y.date_year = 2017 AND c.Country_Id in (4,5,6) AND c.factSet_Level1_Id between 1 and 100 AND mm.Market_Cap between 0 and 10000 then n.EBIT end)/sum(case when y.date_year = 2017 AND c.Country_Id in (4,5,6) AND c.factSet_Level1_Id between 1 and 100 AND mm.Market_Cap between 0 and 10000 then s.Sales end) as 'EBIT/Sales 2017'
from EBIT as n
inner join Sales as s on s.company_id = n.company_id
and s.date_month_id = n.date_month_id
and s.date_year_id = n.date_year_id
inner join date_year as y on y.date_year_id = n.date_year_id
inner join date_month as m on m.date_month_id = n.date_month_id
inner join Market_Cap as mm on mm.Date_Month_Id = n.Date_Month_Id
and mm.Company_Id = n.Company_Id
inner join Company as c on c.Company_Id = n.Company_Id
where y.date_year between 2015 and 2017
and n.EBIT<> 0
and s.Sales<> 0
group by m.date_month;
korrekte Ausgabe:
Danke, ich in der Summe (Fall, wenn ... Dann) zu verfangen bekam Syntax, die ich über die Prinzipien der SQL vergessen ... es funktioniert jetzt –