2011-08-01 2 views
0

하나의 열이 뚜렷하지 않은 소수의 열에 대해 개별 선택을 수행해야합니다. SQL 문에서 고유 그룹을 구성하는 열을 지정할 수 있습니까?DB2에서 하나의 비공 인 열과 함께 고유 한 열을 선택하는 방법은 무엇입니까?

현재이 작업을 수행하고 있습니다.

Select distinct a,b,c,d from TABLE_1 inner join TABLE_2 on TABLE_1.a = TABLE_2.a where TABLE_2.d IS NOT NULL; 

내가 가진 문제는 열 D 다른 값을 보유하고 있기 때문에 위의 SQL에 대한 2 개 행을 얻고있다. 칼럼 d를 무시하고, select 절에 컬럼 d를 가질 수있는 독특한 칼럼 그룹 (a, b & c)을 어떻게 만들 수 있습니까?

참고 :도 개선과 내가 사용하고 DB2

감사 하기 Sandeep

+1

... 'd'의 모든 가치를 원 하시겠습니까 아니면 단지 (어떤 특정) 가치를 원하십니까? 테이블 구조를 얻을 수 있을까요? 이 작업을 수행하는 몇 가지 다른 방법이 있습니다 ... –

+0

X-Zero가 맞습니다 - d 값이 둘 이상인 경우 결과에 표시 할 값은 무엇입니까? –

+0

@ X-Zero 보통 'd'가 NOT NULL인지 확인합니다. 이를 반영하기 위해 쿼리를 수정했습니다. – Sandeep

답변

0

글쎄, 당신의 질문은 여전히 ​​매우 일반적이다. 그래서, 당신은 일반적인 대답을 얻습니다. 테이블 구조 또는 원하는 결과에 대한 자세한 내용을 모른 채

, 의미있는 대답을하는 것은 불가능 수 있지만, 여기 간다 :

SELECT a, b, c, d 
FROM table_1 as t1 
JOIN table_2 as t2 
ON t2.a = t1.a 
AND t2.[some_timestamp_column] = (SELECT MAX(t3.[some_timestamp_column]) 
            FROM table_2 as t3 
            WHERE t3.a = t2.a) 

table_1는 검색 할 하나의 행으로 채워되어 있다고 가정하고, 과 table_2 사이의 일대 다 관계는 d의 다른 값으로 인해 고유 한 [some_timestamp_column] 번으로 채워지므로 만들어집니다. 이 경우 table_1과 일치하는 가장 최근의 table_2 레코드를 가져옵니다.

+0

고마워요. X-Zero..for 이제 내 문제를 해결합니다. – Sandeep

1
SELECT a,b,c,MAX(d) 
FROM table_1 
INNER JOIN table_2 ON table_1.a = table_2.a 
GROUP BY a,b,c 
+0

회신 해 주셔서 고맙습니다. 대개 내 시나리오에서는'd'가 문자열이므로, 확인할 수있는 것은 아마도'WHERE TABLE_2.d IS NOT NULL'입니다. – Sandeep

관련 문제