Нужна помощь для запроса - PullRequest
       6

Нужна помощь для запроса

2 голосов
/ 05 февраля 2010

У меня есть эта таблица

NAME|VALUE|
T   |  A
T   |  NONE
T   |  B
S   |  NONE

где значение NONE - это значение NULL в реальном.

<ч /> Мне нужно сделать запрос, который будет возвращать все строки, НО, если имя имеет значение я должен ТОЛЬКО вернуть строку с его значением, как это в результате для таблицы выше:

NAME|VALUE|
T   |  A
T   |  B 
S   |  NONE

Знаете ли вы, чтобы сделать такой запрос?

Заранее спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 05 февраля 2010

Вот один из способов сделать это:

SELECT T1.NAME, T2.VALUE
FROM (SELECT DISTINCT name FROM Table1) AS T1
LEFT JOIN (SELECT * FROM Table1 WHERE VALUE IS NOT NULL) AS T2
ON T1.NAME = T2.NAME

Результаты:

S   NULL
T   A
T   B
1 голос
/ 05 февраля 2010

Есть максимум два значения? То есть возможно получить только одно значение «НЕТ» или по одному каждому. Если это так, вы можете сделать это:

SELECT name, COALESCE(MAX(NULLIF(value, 'NONE'), 'NONE')
FROM <tablename>
GROUP BY name

Я полагаю, что для общего случая будет работать следующее (возможно одно или несколько значений, отличных от NONE):

SELECT name, value FROM <tablename> WHERE value <> 'NONE'
UNION
SELECT name, value FROM <tablename> WHERE value = 'NONE'
  AND name NOT IN (SELECT name FROM <tablename> WHERE value <> 'NONE')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...