2012-02-29 1 views
0

친구후속 행에 동일한 값의 출력을 스킵

I 테이블로부터 tblABC tbale

OUTPUT 
    ====== 

    SrNo.   Date    BillNo   Amount 
    ================================================= 
    1   10-02-2012   VAT-1   1200.00 
    2        RET-4    50.00 
    3        RET-5    150.50 
    4   11-02-2012   VAT-2   1500.00 
    5        RET-6   2505.00 
    6   12-02-2012   VAT-3    05.00 

로부터 SQL 쿼리와 출력의 유형에 따라 원하는 다음 않은 데이터

 tblABC 
    ====== 

    SrNo.   Date    BillNo   Amount 
    ================================================= 
    1   10-02-2012   VAT-1   1200.00 
    2   10-02-2012   RET-4    50.00 
    3   10-02-2012   RET-5    150.50 
    4   11-02-2012   VAT-2   1500.00 
    5   11-02-2012   RET-6   2505.00 
    6   12-02-2012   VAT-3    05.00 

내가 원하는 OUTPUT과 테이블 간의 차이는 입니다. OUTPUT OUTPUT은 테이블에있는 것처럼 Reptetion을 원하지 않습니다.

어떻게 도와 드릴까요?

+1

는 코드를 보여? –

+2

이 값을 사용하지 않으려면 왜 SQL Server가 필요합니까? 어쨌든 데이터를 표시 할 때 행별로 순환해야하는 클라이언트 응용 프로그램은 마지막 값을 추적하고 현재 값이 동일하면 표시하지 않을 수 있습니까? –

+0

tbobC – Varinder

답변

-1

select 문의 Case 키워드를 사용하십시오. 마지막으로 출력하는 경우에 http://msdn.microsoft.com/en-us/library/ms181765.aspx

+0

이것은 매우 유용한 대답은 아닙니다. 선택 목록에 사례 표현식을 추가하는 것이 얼마나 도움이되는지 설명 할 수 있습니까? –

1
DECLARE @tblABC TABLE 
(
    SrNo INT, [Date] DATETIME, BillNo CHAR(5), Amount DECIMAL(10,2) 
); 

INSERT @tblABC SELECT 1,'20120210','VAT-1',1200.00 
UNION ALL SELECT 2,'20120210','RET-4',50.00 
UNION ALL SELECT 3,'20120210','RET-5',150.50 
UNION ALL SELECT 4,'20120211','VAT-2',1500.00 
UNION ALL SELECT 5,'20120211','RET-6',2505.00 
UNION ALL SELECT 6,'20120212','VAT-3',05.00; 

;WITH x AS 
(
    SELECT SrNo, [Date] = REPLACE(CONVERT(CHAR(10), [Date], 103), '/', '-'), 
    BillNo, Amount, rn = ROW_NUMBER() OVER (PARTITION BY [Date] ORDER BY SrNo) 
    FROM @tblAbC 
) 
SELECT SrNo, [Date] = CASE rn WHEN 1 THEN [Date] ELSE '' END, BillNo, Amount 
    FROM x 
    ORDER BY SrNo; 
+0

안녕하세요 아론 당신의 대답은 맞습니다만, 나는 rn (RowNumber)에서 쿼리를 실행했을 때 그 결과를 출력하지 못했습니다. rn은 다른 날짜를 얻지 못할 때까지 1부터 세기 시작합니다. 나는 그것 (rn)이 다음 날짜에 1에서 다시 시작하는 방법을 얻지 못하고있다. – Varinder

+0

창 함수는 PARTITION BY (그룹화)와 ORDER BY (순위 매기기)를 사용하여 숫자를 할당한다. 영어로 같은 날짜의 모든 행을 가져온 다음 SrNo의 값에 따라 1,2,3 등을 나눕니다. 이제 다음 번 날짜에 대해 반복하십시오. 출력에서 우리는 조건부로 그룹화에서 "처음"이었던 날짜를 표시합니다. –

관련 문제