SQL Server - выберите конкретные строки - PullRequest
0 голосов
/ 18 марта 2012

У меня есть таблица с данными:

id  a_no  accountname
1    NULL   ac1  
1    234    ac2
1    567    ac3
2    NULL   ac4

Я хочу выбрать строку по следующим критериям:

  1. если один и тот же идентификатор существует в более чем 1 строке, удалите строку с помощью a_no=NULL
  2. если идентификатор существует только в 1 строке, оставить эту строку без изменений

Так что результирующие строки должны быть

id  a_no  accountname
1    234    ac2
1    567    ac3
2    NULL   ac4

Как написать запрос T-SQL? Спасибо.

Ответы [ 3 ]

1 голос
/ 18 марта 2012
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 голосов
/ 18 марта 2012

На основании запроса Martinjn я бы пошел на:

select * from t
where id not in (
  select id from t
  where a_no is not null)
or a_no is not null
0 голосов
/ 18 марта 2012
DELETE FROM yourtable
WHERE id IN (SELECT id FROM yourtable
             WHERE NOT a_no IS NULL)
AND a_no IS NULL

Редактировать: Намного проще Редактировать II: Неправильно прочитанный вопрос, вы хотите только выбрать строки, а не удалять их из таблицы.Если это так, вы можете использовать следующее:

SELECT * FROM yourtable
WHERE a_no IS NOT NULL
OR id NOT IN (SELECT id FROM yourtable
              WHERE a_no IS NOT NULL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...