我想更新Table中的一列,并参考同一表中的其他列。
例如:如下图所示 - 我想用最小日期更新有效结束日期,以大于有效记录的有效开始日期为准。
如何在T-SQL中实现这一点。这可以用单个更新语句完成吗?
alt text http://img10.imageshack.us/img10/1448/updateenddate.jpg
感谢。
答案 0 :(得分:1)
我怀疑你想要的是用case语句完成的,但是我不能给你代码,因为你的问题的以下部分没有意义:
使用最小日期更新有效结束时间,以大于有效记录的有效开始日期为准。
答案 1 :(得分:1)
如何使用subselect,如下所示:
UPDATE MyTable mt
SET mt.EFFECTIVE_END_DATETIME = (SELECT MIN(mt2.EFFECTIVE_START_DATETIME)
FROM MyTable mt2
WHERE mt2.EFFECTIVE_START_DATETIME > mt.EFFECTIVE_START_DATETIME);