0

我有一个 BillDate 作为日期,并在 First table 中有一个 Mark as bit 列。(默认标记=0)

在第二个表中,我将 FromDate 作为日期,将 ToDate 作为日期列。

如果在 FromDate 和 ToDate 之间存在 BillDate,我想设置 Mark=1

让我们在第一个表中说数据是

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

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

在第二个表中的数据是

---------------------------------------------
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

所以在上面的场景中,只有第一个表的第二行BillDate->2012-12-12 09:00:00Mark 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 回答