2016-07-07 2 views
1

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

Table [References]: 
[County], [Vendor], [Status], [ID] 

Мне нужно знать, сколько различных [ ID], которые содержат значение [Status] для параметра «FAILED», которое также не имеет [Status] «COMPLETED». В принципе, если сбой завершен без завершения, для этого мне нужна отдельная сумма.

Пример:

County_1, Vendor_1, Failed, 12345.12 
County_1, Vendor_1, Completed, 12345.12 
County_1, Vendor_1, Failed, 12345.32 
County_1, Vendor_1, Failed, 12345.32 
County_1, Vendor_1, Failed, 12345.52 
County_1, Vendor_1, Completed, 12345.52 
County_1, Vendor_1, Failed, 12345.72 

С помощью этих данных, он должен вернуть счетчик 2, так как записей 3 и 4 являются сбои, которые не имеют заполненную запись и запись 7 не либо. Это будет отличный счет, поэтому 3 и 4 будут считаться единичными, так как они одинаковы [ID]

+1

ли вы попытку SQL запрос? – Parfait

ответ

1

Вы можете использовать подзапрос для этого. Сначала извлеките все отдельные идентификаторы с статусом «failed», а затем отфильтруйте идентификатор, который имеет завершенный статус. Пожалуйста, смотрите ниже:

SELECT COUNT(DISTINCT ID) 
FROM References 
WHERE ID NOT IN (
    SELECT DISTINCT ID 
    FROM References 
    WHERE STATUS = 'COMPLETED' 
) 
AND STATUS ='FAILED' 
+0

Спасибо, это именно то, что я искал! – Alex

+0

@Alex Глад я помог. Пожалуйста, примите в качестве ответа. Спасибо :) – TheProvost

0

Вот один вариант использования conditional aggregation:

select count(*) 
from (
    select id 
    from refernce 
    group by county, vendor, id 
    having max(case when status = 'Failed' then 1 else 0 end) != 
     max(case when status = 'Completed' then 1 else 0 end) 
) t 

Вот рабочий пример:

+1

Этот ответ выглядит правильно для меня. Я не могу понять, почему это было бы опущено. (хотя я предпочитаю '<>';). –

+0

Нельзя группировать по графству. Если вы проверите данные, ID 2 может иметь одно и то же значение округа. Он хочет, чтобы подсчет отдельного идентификатора – TheProvost

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