2014-09-25 56 views
0

我正在創建一個存儲過程,它將從sql server中的兩個表中提供一個實體。這兩個表都沒有PK。我需要我的觀點有一個遞增的專欄。從存儲過程創建的實體中創建增加的列 - sql server

到目前爲止,我有這樣的:

@iNodeLevel int, 
    @iParentNodeId bigint 

AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    DECLARE @sQuery varchar (2000) 

    IF @iNodeLevel >= 5 

    RETURN 

    ELSE 

    -- Insert statements for procedure here 
    SET @sQuery = 'SELECT * FROM DataView.dbo.Tree 
    WHERE L' + CAST((@iNodeLevel + 1) AS VARCHAR(10)) + 'TID IS NULL 
    AND L' + CAST((@iNodeLevel) AS VARCHAR(10)) + 'TID = ' + CAST((@iParentNodeId) AS VARCHAR(10)) 

    EXEC (@sQuery) 
    --dbo.DV_GetTreeNodes 1,1 
END 


GO 

得到我想要的信息。我只想還包括上述增加的列。

你是如何做到這一點的?

+0

如果您正在使用SQL Server 2005+你可以模擬與ROW_NUMBER自動增量列() – 2014-09-25 18:05:45

+0

原諒我的,將編輯...的意思是說存儲過程。 – mrwienerdog 2014-09-25 18:06:15

回答

1

您可以使用analytic ROW_NUMBER() function

SELECT *, ROW_NUMBER() OVER (myColumn) AS IncrementedColumn 
FROM TODS26_DataView.dbo.v_PowerSystemCIMTree 
.... 

基於如何myColumn各種各樣這將分配增加值。

+0

謝謝!這正是我需要的...唯一的事情是,我得到一個錯誤的說法,「功能‘ROW_NUMBER’必須有一個OVER子句與ORDER BY」。因此,所有我需要做的是,「SELECT *,ROW_NUMBER()OVER(ORDER BY myColumn)... 然後它的工作太棒了。只是想明確地記錄我需要什麼,以防有人做到人有這個問題。 再次感謝! – mrwienerdog 2014-09-25 18:16:06

+0

優秀,並感謝在第一個查詢的問題擡頭,我會刪除它。沒有點留下一個不好的查詢。 – 2014-09-25 18:18:12

相關問題