2017-04-10 2 views
-1

良い一日を検索するSQLビューには、表または他のビュー

その後、私は持っているあなたが親切に私を助けることができる、私は

select TxDate, Reference, Amount 
    FROM Transactions 

ようtxDate、参照を持つSQLビュー、金額 を持っていますPeriodId、開始日と終了日

はそう時間は、月によって

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 
でいる期間と呼ばれる表、

そしてそうにアップ12月までの期間12になり、

だから私は私のSQLビューでtxDateを使用して期間テーブルを検索するクエリを持ちたい、例

 if txDate is '2017/02/25' 

のためのクエリこの例では、それは2

する必要がありますので、TxDateは、開始日と終了日の間にされているPeriodIDを返さなければならないので、私の結果は、この

txDate    Reference    Amount   PeriodID 
    2017/02/25   INVOO1    2000    2 
    2017/01/04   REC002     30    1 
    2017/03/05   SALE     5000    3 
のようなものでなければなりません

PEriodIDをSQLビューに表示するには、そのテーブルを検索するときにJOINをどのようにするのですか?

+0

してください、フォーマットされましたテキストは写真ではありません。 – jarlh

+0

必要な結果と同様に書式設定されたテキストを追加します。現在のクエリの試行を表示してください。 – jarlh

+0

これは、期間テーブルにオーバーラップ期間がないことを100%確信している場合にのみ有効です – GuidoG

答えて

0

あなたが期間テーブル内のスタート - と終了日が重なることはありませんし、あなたのTxDateに一致する期間テーブルのレコードが常に存在だということ、それは非常に簡単だと確信している場合:

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

ありがとうございます@ロバーツ –

関連する問題