0
需要基於ID3列生成隨機數。在備註中提到了每一行邏輯。 注意:這是我需要應用於大數據集的示例數據
是否有可能根據條件創建一個rand數字或遞增數字。
IF條件通過,那麼保持相同別人產生另一個(蘭特+1)
需要基於ID3列生成隨機數。在備註中提到了每一行邏輯。 注意:這是我需要應用於大數據集的示例數據
是否有可能根據條件創建一個rand數字或遞增數字。
IF條件通過,那麼保持相同別人產生另一個(蘭特+1)
這會給你你想要的行爲的遞增數,假設ID1是一個遞增的數字。如果不是,您需要其他方式來訂購數據,因爲訂單是您想要的行爲所固有的。
在這裏,我認爲我們可以通過ID1下令自不使用其他任何地方在邏輯
create table #t
(
ID1 INT,
ID2 INT,
ID3 INT
)
insert into #t(ID1, ID2, ID3) values(1,1,1),(2,1,1),(3,2,1),(4,2,31),(5,2,1),(6,2,1),(7,2,23),(8,2,31);
with c1 as
(
select ID1, ID2, ID3,
case when ID3 != 1 or lag(ID3,1,2) over (order by ID1) != 1 then 1 else 0 end as IncrementHere
from #t
)
select ID1, ID2, ID3, sum(IncrementHere) over (order by ID1 rows unbounded preceding) as IncrementingNumber
from c1
因爲從上面的評論ID1是不增加,這將需要修改與其他一些排序 - 基本上取代「訂單由ID1」與「由{其他} 」。表中的數據沒有無序的順序,如果沒有其他合適的排序條件,您可能需要向表中添加標識列。 –
是ID1真的「X」或者這是一個遞增的價值?我們如何訂購數據? –
另外,您使用的是哪個版本的SQL Server?例如,SQL 2012+將有不同的解決方案。 – iamdave
請閱讀[this](http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/)以獲取有關改善問題的一些提示。使用合適的軟件(MySQL,Oracle,DB2,...)和版本(例如, '的SQL服務器2014'。語法和功能的差異往往會影響答案。 – HABO