2013-07-03 6 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 서버의 각 행에 대해 1을 반환합니다.

나는이 동작을 이해하지 못한다.

+1

을 시도 사건은 때입니다 나는 그 문제 밖에서 select 문을 사용한다. 그렇지 않다면 outer select 문을 제거하면된다. –

+0

왜 외부 select 문을 가지고 있는가? 비즈니스 로직에 대한 내부 쿼리를 직접 사용할 수 있습니까? –

+1

내가 선택하고 그것을 다른 테이블에 삽입하는 데 사용하는, 내가 왜 그렇게 했어,하지만 그건 제약이 아니에요, 내가 외부 선택을 제거하고, 내 쿼리는 괜찮아요,하지만 난 왜 그 행동을 이해하고 싶어, 행 번호가 –

답변

2

유 bcoz 각 행
에 대한 ROW_NUMBER를 선택하는 각 행에 대해 ROW_NUMBER 1을 받고 ...이 --->

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 
관련 문제