Ich benutze PostgreSQL 9.5. Ich habe Schlepptau TabellenSQL JOIN bekomme Daten aus der linken Tabelle Nur wenn alle richtigen Spalten übereinstimmen
EmployeeReportMarch
EmployeeId Bonus Day
---------------------------------
1 10000 23
EmployeeReport20152016
EmployeeId Bonus Month
---------------------------------
1 10000 02
1 10000 03
EmployeeReport
EmployeeId Bonus FiscalYear
---------------------------------
1 100000 20152016
1 90000 20162017
Calendar
Day_Id Day Month FiscalYear
--------------------------------------------
2015-03-21 21 3 20152016
2015-03-22 22 3 20152016
2015-03-23 23 3 20152016
2015-03-24 24 3 20152016
2015-03-25 25 3 20152016
Kalender Tabelle ist von ‚2010-01-01‘ auf ‚2016.12.31‘. Das Geschäftsjahr ist vom 1. April bis zum 31. März.
Wenn ich Beitritt sowohl Tabelle von Daten zu erhalten
SELECT e.EmployeeeId, e.Bonus
FROM Employee e INNER JOIN Calendar c ON e.Day = c.Day
WHERE c.Day_Id BETWEEN '2015-02-01'::Date AND '2015-03-31'::Date;
Ausgang:
EmployeeId Bonus Day_Id
-------------------------------------
1 10000 2015-02-23
1 10000 2015-03-23
SELECT e.EmployeeeId, e.Bonus
FROM Employee e INNER JOIN Calendar c ON e.Month = c.Month
WHERE c.Day_Id BETWEEN '2015-02-01'::Date AND '2015-03-31'::Date;
Ausgang:
EmployeeId Bonus
--------------------
1 100000
1 100000
--59 Rows (2 Month rows)
SELECT e.EmployeeeId, e.Bonus
FROM Employee e INNER JOIN Calendar c ON e.FiscalYear = c.FiscalYear
WHERE c.Day_Id BETWEEN '2015-02-01'::Date AND '2015-03-31'::Date;
Ausgang:
EmployeeId Bonus
--------------------
1 10000
1 10000
--365 Rows
Aber es ist nur ein Datensatz in der Tabelle übrig. Ich habe es auch mit OUTER JOIN versucht, aber das Ergebnis war das selbe wie die Idee.
Ihre Frage ergibt keinen Sinn. "nur ein Datensatz in der Tabelle übrig". Hä? Sie tun eine Auswahl, dies hat keine Auswirkungen auf den Inhalt der Datensätze. Bitte bearbeiten Sie Ihre Frage und geben Sie Beispieldaten * und * gewünschte Ergebnisse an. –
'SELECT e.EmployeeId, e.Bonus, c.DayId' << - ein Komma hinzufügen – joop
@Gordon Linoff ist nur ein Beispiel. In meinem Tisch sind lakhs verzeichnet. Problem ist das Geben eines Datensatzes von einem anderen Monat, der nicht existiert, da der Tag in der Kalendertabelle übereinstimmt. –