2013-07-03 31 views
1
(SELECT 
    (SELECT ROW_NUMBER() OVER (order by t.NotificationID)) as RowNumber, 
      [NotificationID],[ProjectID],[TeamMemberID],[OperationType], 
      [Hours],[Occurance],[Period],[NotificationText], 
      [NotificationRecipientIDs],[NotificationRecipientClienitsIDs] 

     FROM tblIA_Notifications t 
     WHERE IsDeleted = 0 AND IsActive = 1 
    ) 

上述查询始终为每行返回rownumber 1。当我在外面使用select语句时,它的问题。否则,如果我删除外部选择语句它的罚款。行号始终为sql server中的每一行返回1

我不明白这个行为。

+1

的情况是,当我使用外部选择语句然后它的问题,否则,如果我删除外部选择语句它的罚款 –

+0

为什么你有外部选择语句?不能直接使用内部查询来处理业务逻辑吗? –

+1

我用它来做选择和插入到其他表,这就是为什么我这样做,但这不是约束,我已经删除外部选择,并且我的查询是好的,但只是我想明白为什么它的行为如此,与行号 –

回答

2

ü越来越ROW_NUMBER 1的每一行bcoz都选择ROW_NUMBER的每一行
试试这个--->

SELECT  ROW_NUMBER() OVER (order by t.NotificationID) as RowNumber, 
       [NotificationID], 
       [ProjectID], 
       [TeamMemberID], 
       [OperationType], 
       [Hours], 
       [Occurance], 
       [Period], 
       [NotificationText], 
       [NotificationRecipientIDs], 
       [NotificationRecipientClienitsIDs] 
    FROM  tblIA_Notifications t 
    WHERE  IsDeleted = 0 
    AND  IsActive = 1 
+0

这种情况是当我使用选择语句之外,那么它的问题,否则,如果我删除外部选择语句其罚款 –

+0

可以粘贴你的完整的SQL查询吗? –

+0

我有我的问题,这是完整的查询后,如果你删除选择(从第一行,它会工作,否则它不会,我只想知道它的行为为什么它这样做 –

1

尝试...

SELECT ROW_NUMBER() OVER (order by T.COLUMN_NAME) as RowNumber FROM [dbo].[TABLE_NAME] T