2016-11-02 4 views
0
....その後、私はもう一つの「トランザクション」TXID、txDate、デビット、クレジットと

SQLビューには、リンクを持たない二つのテーブルに参加する

と呼ばれているPeriodID、fromDateから、のToDateで

...これらのテーブルは、特定のプログラムの準備ができていて、変更できません。

私は、TransactionからtxDateを使用して期間テーブルを検索する方法があるかどうかを知りたいのですが、txDateが特定の期間のfromDateとtoDateの間にある場合は、TransactionテイクとPeriodIDを追加します。

+3

両方のテーブルのサンプルデータと希望の結果を入力してください。 – GuidoG

答えて

0

サンプルデータがないと、これらの質問に答えるのは少し難しいです。しかし、私があなたを正しく理解したと仮定すると...

betweenを使用して、これら2つのテーブルを結合することができます。

この参加は、取引日をカバーする期間を返します。

-- Join without a matching field. 
SELECT 
    * 
FROM 
    [Transaction] AS t 
     INNER JOIN [Period] AS p  ON t.txDate BETWEEN p.fromDate AND p.toDate 
; 
+0

はい、あなたは私を正しく理解しました。これはまさに私が望んでいたものです。 –

0

これを試してください、あなたの質問に合っていますか?

SELECT * 
FROM Transaction 
WHERE EXISTS 
(
SELECT 1 FROM Period WHERE txDate BETWEEN fromDate AND ToDate 
) 
+0

サブクエリから外部クエリを参照するときは注意してください。これは[相関サブクエリ](https://en.wikipedia.org/wiki/Correlated_subquery)と呼ばれます。このような種類のクエリは、外部クエリによって返されたすべての行に対してSQL Serverがサブクエリを一度再評価する必要があるため、パフォーマンスが低下する可能性があります。 –

関連する問題