Estou preso em como retornar um valor de bit com base em registros com determinados valores. A Consulta precisa retornar VERDADEIRO ou FALSO se houver três Níveis diferentes do mesmo Controle:
Dados de exemplo:
PRODUCT CONTROL LEVEL
test1 8 1
test1 8 2
test1 8 3
test2 8 1
test2 8 1
test2 8 3
test4 8 1
test4 8 3
test4 8 7
Preciso de uma consulta que retorne:
PRODUCT STATUS
test1 PASS
test2 FAIL
test4 PASS
Não sei por onde começar. Quaisquer dicas são imensamente apreciadas.
Esta consulta retornará PASSA se houver pelo menos três níveis únicos, caso contrário FALHA.
COUNT(DISTINCT ..)
conta o número de valores exclusivos de uma coluna ou expressão.CASE
retorna valores diferentes, dependendo do resultado de diferentes condições. Neste caso, se o número de valores únicos for igual ou superior a três, queremos retornar 'PASS', caso contrário, 'FAIL'.Obviamente, se você deseja retornar um valor de bit (ou seja, booleano), pode alterar as strings 'PASS' e 'FAIL' no código para 1 e 0, respectivamente, e convertê-las em bit usando
CAST(... AS bit)
.Para adicionar às outras respostas, esta consulta fornece PASS ou FAIL para cada Produto exclusivo com 1 ou mais Controles com pelo menos 3 Níveis diferentes para pelo menos um dos Controles: