如何为多行选择NEWID()

时间:2015-05-18 22:29:02

标签: sql sql-server

SELECT是这样的:

SELECT  DISTINCT  
     Header.EntryGUID,
     Header.ImportDate
FROM table_Name Header
WHERE Header.ID 
ORDER BY EntryGUID

OUTPUT是:

EntryGUID   -------------------------------------------------  ImportDate

B7FFC239-2370-4E65-A184-7F2DD18A196E-----2015-02-24 00:00:00.000

B7FFC239-2370-4E65-A184-7F2DD18A196E-----2015-03-15 00:00:00.000

我的问题是如何选择第二行NEWID()

1 个答案:

答案 0 :(得分:2)

您可以使用窗口功能执行此操作:

select ImportDate,
       case when row_number() over(partition by EntryGUID order by ImportDate) = 1
            then EntryGUID else newid() end as EntryGUID
from(
SELECT DISTINCT  
     Header.EntryGUID,
     Header.ImportDate
FROM table_Name Header
WHERE Header.ID = 'variable')t

这将按日期排序,保持第一行不变,并用新guid替换其他行。