2017-04-10 6 views
-1

Guten TagSql Ansicht Zum Suchen Sie in eine Tabelle oder eine andere Ansicht

Ihnen helfen kann mich freundlich, ich habe eine SQL-Ansicht Das hat txDate, Referenz, Betrag wie

select TxDate, Reference, Amount 
    FROM Transactions 

Dann habe ich eine Tabelle genannt Periode, die PeriodId, Startdatum und EndDate

so die Zeit hat, ist nach Monat, LIKE

PeriodID   StartDate    EndDate 
    1     2017/01/01    2017/01/31 
    2     2017/02/01    2017/02/29 
    3     2017/03/01    2017/03/31 
    4     2017/04/01    2017/04/30 

Und so weiter, bis Dezember die 12 Periode sein wird,

Deshalb möchte ich die Abfrage haben, um die Periode Tabelle mit dem txDate in meiner SQL-Ansicht zu suchen, für

Beispiel
 if txDate is '2017/02/25' 

Der Query wonach der PeriodID kehrt die TxDate zwischen Startdate und EndDate ist, so in diesem Fall sollte es 2.

werden, so sollte mein Ergebnis so etwas wie dieses

txDate    Reference    Amount   PeriodID 
    2017/02/25   INVOO1    2000    2 
    2017/01/04   REC002     30    1 
    2017/03/05   SALE     5000    3 
sein

Wie mache ich das JOIN auf Suchen dieser Tabelle, um die PEriodID auf meine SQL-Ansicht zu bringen ... ??

+0

Bitte, vorformatiert Text nicht Bilder. – jarlh

+0

Fügen Sie das gewünschte Ergebnis hinzu - auch formatierten Text. Und zeigen Sie uns Ihren aktuellen Abfrageversuch. – jarlh

+0

Das kann nur funktionieren, wenn Sie 100% sicher sind, dass es in Ihrer Periodentabelle keine überlappenden Zeiträume gibt – GuidoG

Antwort

0

Wenn Sie sicher sind die Start- und End-Datum innerhalb der Periodentabelle nie überlappen, und dass es immer ein Datensatz in der Periodentabelle, die Ihren TxDate paßt, es ist ganz einfach:

SELECT tran.TxDate, 
     tran.Reference, 
     tran.Amount, 
     peri.idPeriod 
FROM Transactions tran 
JOIN Period  peri 
    ON tran.TxDate BETWEEN peri.PeriodStartDate and peri.PeriodEndDate, 
+0

Danke @Robert –

Verwandte Themen