有一个重复的字段,我只需要更新一行如何使用sql 2005进行此操作?
我的数据库如下所示:
+----------------+-------+-------------+------------------+---------------+ | Transaction_no | User | Check-In | Check-Out | barcode | +----------------+-------+-------------+------------------+---------------+ | 01-2013 | User1 | --/--/-- | 12/28/2013 11:10 | APH009300L030 | | 01-2013 | User1 | --/--/-- | 12/28/2013 11:10 | APH009300L030 | | 01-2013 | User1 | --/--/-- | 12/28/2013 11:10 | APH009300L030 | | 01-2013 | User1 | --/--/-- | 12/28/2013 11:10 | APH009300L030 | +----------------+-------+-------------+------------------+---------------+
答案 0 :(得分:0)
尝试这样
;WITH NumberedTbl AS
(
SELECT ROW_NUMBER() OVER (
PARTITION User,Check-In,Check-Out,barcode,Transaction_no
ORDER BY User,Check-In,Check-Out,barcode,Transaction_no
) AS RowNumber,
User,Check-In,Check-Out,barcode,Transaction_no
FROM tbl
)
UPDATE T
SET Check-In= GETDATE()
FROM NumberedTbl T
WHERE T.RowNumber = 1
SELECT * FROM tbl
答案 1 :(得分:0)
您的表格中需要的是主键列。您只需添加一个标识字段即可。然后,您将能够轻松编写所需的查询。
答案 2 :(得分:0)
诸如row_number,rank,dense_rank之类的ranking函数不会工作,因为所有字段值都相同,并且在partitioninh之后的任何列上应用ORDER BY将为所有行生成相同的排名。
而是添加另一列habing唯一值,例如Identity column qfter,您可以在ORDER By子句中使用此columm。