2012-03-18 6 views
0

을 선택SQL 서버 나 데이터 테이블이 특정 행

나는 다음과 같은 기준 행을 선택합니다
id a_no accountname 
1 NULL ac1 
1 234 ac2 
1 567 ac3 
2 NULL ac4 

:

다음
  1. 같은 ID가 1 개 이상의 행에 존재하는 경우, ID는 변경되지 않은 해당 행을 유지 한 행에 존재하는 경우 a_no=NULL
  2. 으로 행을 제거

결과 행은

이어야합니다.
id a_no accountname 
1 234 ac2 
1 567 ac3 
2 NULL ac4 

T-SQL 쿼리를 작성하는 방법은 무엇입니까? 감사.

+2

어떤이 경우 NULL 값이 동일한 ID를 위해 존재 하는가? –

답변

1
select * from yourtable 
where a_no is not null 
union all 
select * from yourtable 
where id not in 
    (select id from your table where a_no is not null) 
+0

을 삭제하려고하지 않고 선택하려고합니다. Phil은 처음 올바르게 대답합니다. 어쨌든 모든 사람들에게 감사드립니다! – newcoder

0
DELETE FROM yourtable 
WHERE id IN (SELECT id FROM yourtable 
      WHERE NOT a_no IS NULL) 
AND a_no IS NULL 

편집 : 훨씬 간단 편집 II는 : 귀하의 질문에 오해, 당신은 단지 테이블에서 삭제 행을하지 선택합니다. 그렇다면, 당신은 사용할 수있는 다음과 같은 : 내가 가고 싶어 Martinjn 쿼리를 기반으로

SELECT * FROM yourtable 
WHERE a_no IS NOT NULL 
OR id NOT IN (SELECT id FROM yourtable 
       WHERE a_no IS NOT NULL) 
+0

newcoder는 Martijn and Mosty가 더 나은 코드를 작성했지만 – Phil

0

:

select * from t 
where id not in (
    select id from t 
    where a_no is not null) 
or a_no is not null