2016-04-04 4 views
-1

Мне нужно сгруппировать результат теста «PASS»/«FAIL» для серийного номера. Если один или более Test "FAIL" результат для серийного номера "FAIL"Sqlite GROUP query

CREATE TABLE IF NOT EXISTS Test 
(
    Id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
    Product TEXT NOT NULL, 
    Serial INTEGER NOT NULL, 
    Result TEXT NOT NULL, 
    NTest INTEGER NOT NULL 
    ); 

INSERT INTO Test (Product, Serial, Result,Ntest) 
VALUES ('Sample', 1, 'PASS',1),('Sample', 1, 'FAIL',2), 
('Sample', 1, 'PASS',3),('Sample', 2, 'PASS',1), 
('Sample', 2, 'PASS',2),('Sample', 2, 'PASS',3); 

SELECT Product,Serial,Result 
FROM test 
GROUP BY Serial; 

DELETE FROM test; 
DROP TABLE test; 

мне это нужно:

"Sample" "1" "FAIL" 
"Sample" "2" "PASS" 

, но результат являются:

"Sample" "1" "PASS" 
"Sample" "2" "PASS" 

благодаря

+0

Сериал не являются уникальными, у меня есть какой-то тест на тот же серийный и результат «хранится» как PASS или FAIL. Необходимо Группировать, чтобы иметь один ряд Продукт, Серийный, Результат. Результатом является PASS, если все строки для одного и того же серийного номера имеют PASS – Stacker

ответ

0

Группировка результатов в одной строке вывода для каждой группы. Вы не можете просто перечислить столбец, который не сгруппирован сам; это будет происходить из случайной строки в группе.

В этом случае 'F' < 'P', так что вы хотите наименьшее значение в группе:

SELECT Product, Serial, MIN(Result) 
FROM test 
GROUP BY Serial; 
+0

Great !!!! Работа. спасибо – Stacker