2011-08-17 2 views
-2

각 국가 및 다른 관련 정보에 대한 데이터 행을 반환하는 쿼리가 있습니다.조인의 행이 홀수인지 또는 SQL Server에서도 홀수인지 확인

ID User  Country  RowNumber 
    8 testtest BANGLADESH 1 
    14 testtest ANGOLA  2 
    14 testtest AUSTRALIA 3 
    14 testtest BANGLADESH 4 
    15 testera1 BELIZE  5 
    15 testera1 CONGO  6 

는 그러나, 나는 각각에 대해 0 또는 1을 반환해야합니다

SELECT a.*, ROW_NUMBER() OVER(ORDER BY a.DateSubmitted) As RowNumber, c.CountryName FROM  Table1 a 
inner join Table2 b 
on a.id = b.id 
inner join Table3 c on c.countrycode = b.countrycode 

이 지금처럼 각 행에 대해 행 번호를 반환과 같이 (제거되지 관련 모든과) 쿼리 보인다 고유 한 ID는이고 주 진술의 각 행에는 해당하지 않습니다.

ID User  Country  RowNumber 
    8 testtest BANGLADESH 0 
    14 testtest ANGOLA  1 
    14 testtest AUSTRALIA 1 
    14 testtest BANGLADESH 1 
    15 testera1 BELIZE  0 
    15 testera1 CONGO  0 

내가 SQL 꽤 약한 그리고 난 마침내 그것을 개선하기 위해 의식적인 시도를 만들고 있어요, 그래서 당신의 도움을 주셔서 대단히 감사합니다 : 그래서 내가하고 싶은 것은 다음과 같다.

+0

원하는 출력이 의미가 없습니다. 설명 할 수 있니? – JNK

+0

그는 각 개별 id에 대해 0,1,0,1,0,1을 교대로 바꾸고 싶습니다. 내가 말할 수있는 한 ... – MatBailie

+0

RowNumber의 열 제목은 분명하지 않습니다. 찾고. 내가 뭘 하려는지 부모 레코드 및 국가 또는 행 번호를 기반으로 보고서에서 대체 행 색입니다. 그래서 내가 필요한 것은 지표에서 벗어나기위한 지표이지만 새로운 ID 행마다 0과 1 사이를 전환해야합니다. –

답변

2

DENSE_RANK()는 각각 id에 다른 값을 지정하는 데 사용할 수 있지만 동일한 값을 갖는 모든 일치 항목은 id입니다.

SELECT 
    a.*, 
    c.CountryName 
    ROW_NUMBER() OVER(ORDER BY a.DateSubmitted) As RowNumber, 
    (DENSE_RANK() OVER (ORDER BY a.ID) - 1) % 2 As StrangeBinaryFlag 
FROM 
    Table1 a 
INNER JOIN 
    Table2 b 
    ON a.id = b.id 
INNER JOIN 
    Table3 c 
    ON c.countrycode = b.countrycode 
+0

나는 그가 RowNumber를 얻는 방법을 여전히 얻지 못한다 ... – JNK

+0

예, 그는 'a. *'를 사용하는 것이 영리하다. 그러나 'DateSubmitted'는 없다. 그의 결과. 방금 무시하고 뚜렷한 ID를 통해 0,1,0,1,0을주는 예제를 제공했습니다. 모호한 희망에서 그것은 그가 의미했던 것입니다. 그렇지 않다면 나에게 손실이 없다. – MatBailie

+0

아마 하나 또는 양쪽 구절에 [PARTITION BY ID]가 필요하다. –

1

만들 최고의 프로그래밍 연습 &에 따라 ... 숫자로 % 2을하고 당신이 0 또는 1를 얻을 당신의 삶과 다른 사람의 용이 :

오히려 쿼리에 서식 정보를 반환, 당신이해야보다 디스플레이 도구에서 키가 변경 될 때 행 색상을 교체하는 방법을 알아보십시오. 이것이 바로 SQL보다 훨씬 쉽고 우아하게 구축 될 것입니다.

+1

본인은 동의하며 귀하가해야 할 일을 수행 할 수있는보고 도구를 사용할 수 있다면 그렇게 할 수 있습니다. 그렇지 않으면 다른 방법을 찾아야합니다. –

관련 문제