2015-08-04 2 views
1

У меня есть таблица в моей базе данных, которая выглядит как:Как пропустить определенную строку в SQL

+-------------+---------+--------+ 
| ProductName | Status | Branch | 
+-------------+---------+--------+ 
| P1   | dead |  1 | 
| P1   | dead |  2 | 
| P2   | expired |  1 | 
| P3   | expired |  3 | 
+-------------+---------+--------+ 

Я хочу, чтобы показать результат после сравнения продуктов, как: (Сравнивая продукты из отделения 1 и 2)

+-------------+---------+--------+ 
| ProductName | Branch 1|Branch 2| 
+-------------+---------+--------+ 
| P1   | dead | dead| 
| P2   | expired | OK | 
+-------------+---------+--------+ 

Но после того, как я запускаю следующий запрос:

<pre> 
SELECT ProductName, 
MAX(CASE 
WHEN Branch=1 
THEN Status 
ELSE NULL 
END) AS 'Branch 1', 
MAX(CASE 
WHEN Branch=2 
THEN Status 
ELSE NULL 
END) AS 'Branch 2' 
FROM MyTable 
GROUP BY ProductName; 

Я получаю результат:

+-------------+---------+--------+ 
| ProductName | Branch 1|Branch 2| 
+-------------+---------+--------+ 
| P1   | dead | dead| 
| P2   | expired | OK | 
| P3   | OK  | OK | 
+-------------+---------+--------+ 

SQLFiddle
Что я хочу, чтобы не включать продукты в таблице, которые кроме этого Сектора 1 или 2. Благодаря

ответ

1

Фильтр результаты запроса с использованием WHERE Branch IN(1,2)

SELECT ProductName, 
     COALESCE( MAX(CASE 
      WHEN Branch=1 
      THEN Status 
      ELSE NULL 
     END) ,'OK') AS 'Branch 1', 
     COALESCE(MAX(CASE 
      WHEN Branch=2 
      THEN Status 
      ELSE NULL 
     END),'OK') AS 'Branch 2' 
FROM MyTable 
WHERE Branch IN(1,2) 
GROUP BY ProductName 

DEMO

+0

Спасибо. Не могли бы вы рассказать мне, как именно работает ** Where In **? – Hasnain

+1

Параметр 'IN()' будет включать только строки с ветвью 1 или 2, которые будут фильтровать все строки с разным номером филиала, например 3, если вы хотите получить записи, чья ветвь может b 2 или 3, а затем в разделе будет '' Ветвь в (2,3) 'см. Образец [' demo'] (http://sqlfiddle.com/#!9/200de/14) –

+1

@M Халид, я понял. спасибо за вашу любезную помощь. – Hasnain

Смежные вопросы