0

BillDate を日付として、Mark as bit 列を First テーブルに持っています。(デフォルトではマーク=0)

2 番目のテーブルでは、FromDate を日付として、ToDate を日付列として使用しています。

BillDate が FromDate と ToDate の間に存在する場合、Mark=1 を設定したい

最初のテーブルでデータが

----------------------------
BillDate             | Mark
----------------------------
2012-11-10 11:15:30  | 0

2012-12-12 09:00:00  | 0

2番目のテーブルのデータは

---------------------------------------------
FromDate             | ToDate
---------------------------------------------
2012-11-01 07:00:00  | 2012-11-09 23:59:59

2012-12-08 07:00:00  | 2012-12-15 23:59:59

したがって、上記のシナリオでは、最初のテーブルの2番目の行のみが、2 番目のテーブルの2番目の行の間BillDate->2012-12-12 09:00:00にあるためです。Mark as 1

シナリオを説明できたと思いますが、

4

2 に答える 2

0

使用している SQL のフレーバーと、テーブルをリンクする他のフィールドがあるかどうかについては述べていません。したがって、クロス結合を想定すると、次のようになります。

Update ft
SET mark = 1
FROM FirstTable ft, SecondTable st
WHERE BillDate BETWEEN StartDate AND EndDate
于 2013-01-23T12:21:22.273 に答える
0

これはほとんど/すべてのDMBSで機能すると思います(指定なし)

UPDATE  FirstTable
SET     Mark = 1
WHERE   EXISTS
        (   SELECT  1
            FROM    SecondTable
            WHERE   FirstTable.BillDate BETWEEN SecondTable.Fromdate AND SecondTable.ToDate
        );
于 2013-01-23T13:37:36.140 に答える