【发布时间】:2019-02-10 21:08:48
【问题描述】:
简单表格
Date |ChannelID
01/01/2001 | 1001
02/01/2001 | 1001
03/01/2001 | 1001
04/01/2001 | 1001
05/01/2001 | 1001
06/01/2001 | 1001
我需要在每一行上随机将 ChannelID 值替换为 1001、2001 或 2002。
我尝试执行以下操作,但似乎没有给我随机条目,并且由于某种原因错过了最后一个值。
update A
set ChannelID = (
SELECT TOP 1 b.q
FROM (
SELECT 1001 AS q
UNION ALL
SELECT 2001
UNION ALL
SELECT 2002
) b
CROSS APPLY (
SELECT TOP 1 b2.q2
FROM (
SELECT 1001 AS q2
UNION ALL
SELECT 2001
UNION ALL
SELECT 2002
) b2
WHERE b.q <> b2.q2
ORDER BY newid()
) b2
ORDER BY NEWID()
)
From A
有没有一种优雅的方法可以在不使用临时/变量表的情况下实现这一点?
抱歉,如果这是一个类似的帖子,但没有使用临时表等找不到任何东西。
【问题讨论】:
标签: sql sql-server random