我有像下面如何使用日期範圍期限(日期和時間)添加和更新數據?
階段1
表名的表:產品
Date_From Date_To Available
01/03/2011 05/03/2011 5
06/03/2011 15/03/2011 6
階段2
如果我更新上述具有低於數據
Date_From Date_To Available
04/03/2011 08/03/2011 4
10/03/2011 18/03/2011 2
表第3階段
我需要產品表(階段1)這樣的輸出,當
Date_From Date_To Available
01/03/2011 03/03/2011 5
04/03/2011 08/03/2011 4
06/03/2011 15/03/2011 6
10/03/2011 18/03/2011 2
希望能對您有所幫助
編輯與階段更新在同一時間2個數據:
create table t (dt_from datetime,dt_to datetime, Available int)
insert into t values ('20110301','20110305',5)
insert into t values ('20110306','20110315',6)
運行觸發器創建後
--insert into t values ('20110304','20110308',4)
---insert into t values ('20110310','20110318',2)
SELECT *,ROW_NUMBER() OVER (ORDER BY dt_from) rn FROM t
CREATE TRIGGER my_tr ON t FOR INSERT
AS
UPDATE t SET dt_to=(SELECT TOP 1 DATEADD(d,-1,dt_from) FROM inserted t1 WHERE dt_from
BETWEEN t.dt_from AND t.dt_to AND t.Available<>t1.Available)
WHERE EXISTS (SELECT * FROM inserted t1 WHERE dt_from
BETWEEN t.dt_from AND t.dt_to AND t.Available<>t1.Available)
UPDATE t SET dt_from=(SELECT TOP 1 DATEADD(d,1,dt_to) FROM inserted t1 WHERE dt_to
BETWEEN t.dt_from AND t.dt_to AND t.Available<>t1.Available)
WHERE EXISTS (SELECT * FROM inserted t1 WHERE dt_to
BETWEEN t.dt_from AND t.dt_to AND t.Available<>t1.Available)
上面的代碼工作正常,我得到下面的結果
Date_From Date_To Available
01/03/2011 03/03/2011 5
04/03/2011 08/03/2011 4
09/03/2011 09/03/2011 6
10/03/2011 18/03/2011 2
,但只有一個問題,我面對的是
insert into t values ('20110301','20110318',5)
它沒有得到正確的結果
我需要得到像下面
Date_From Date_To Available
01/03/2011 18/03/2011 5
,祝你的幫助
它很難明白你正在嘗試做的,爲什麼有替代數據而不是插入2個新行更新表? –
如果您發佈代碼,XML或數據樣本,請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼樣本」按鈕(「{}」),以精確地格式化和語法突出顯示它! –
becasuse因爲我想用新數據更新表(Availaility) – user475464