No artigo de hoje, vou demonstrar como fazer um COUNT com CASE WHEN no SQL Server.
Se você já precisou contar registros no SQL Server, sabe da utilidade do comando COUNT, mas e se você precisar utilizar uma condição para contar os registros, algo como um CASE WHEN, como fazer?
Pois bem pessoal, o COUNT retorna a quantidade de registros não nula de uma expressão, então se você quer contar os registros com uma condição, você tem que definir a regra do se / caso, e não pode ter um else.
Por exemplo, de todas as notas fiscais do período, quero contar todos os registros, e comparar com a quantidade de devoluções.
Para fazer isso, dou um SELECT na tabela, em uma das colunas eu uso COUNT para ver o total de registros, e na segunda coluna eu uso COUNT com CASE, retornando o número do documento (caso queira, é possível usar um DISTINCT também caso a query esteja em agrupamento). Abaixo a query:
SELECT COUNT(F2_DOC) AS TOTAL_DOC, COUNT((CASE WHEN F2_TIPO = 'D' THEN F2_DOC END)) AS TOTAL_DEV FROM SF2010 SF2 WHERE F2_FILIAL = '01' AND F2_EMISSAO >= '20210501' AND F2_EMISSAO >= '20210531' AND SF2.D_E_L_E_T_ = ' '
Bom pessoal, por hoje é só.
Abraços e até a próxima.