Ist es möglich, 'case' mit und in 'count' zu benutzen?

Ist es möglich, den case mit und in der count zu benutzen

  SELECT branches.NAME AS agence, count( CASE loanstatus WHEN '1' AND Datepart(month,loanaccount.issuedate)= 2 THEN 1 ELSE NULL END )AS nombre_de_credits_demande , count( CASE loanstatus WHEN '2' datepart(month,loanaccount.chargeoffdate)= 2 THEN 1 ELSE NULL END )AS nombre_de_credits_approuve 

Bitte hilf mir

Sie können es mit count() . Ich bevorzuge sum() :

 select Branches.Name as Agence, sum(case when LoanStatus = '1' and datepart(MONTH, LoanAccount.IssueDate) = 2 then 1 else 0 end ) as Nombre_de_Crédits_Demandé , sum(case when LoanStatus = '2' and datepart(MONTH, LoanAccount.IssueDate) = 2 then 1 else 0 end ) as Nombre_de_Crédits_Approuvé 

Das Problem mit deinem Code war nicht die count() versus sum() es ist das Mischen von zwei verschiedenen case Syntaxen. Wenn Sie den case <var> when <val> , können Sie keine anderen Bedingungen enthalten. Verwenden Sie einfach, when mit den vollen Bedingungen, die Sie wollen.

Und wenn du willst, kannst du count() anstelle von sum() .

Und für Prägnanz bevorzuge ich den month() function:

 select Branches.Name as Agence, sum(case when LoanStatus = '1' and MONTH(LoanAccount.IssueDate) = 2 then 1 else 0 end ) as Nombre_de_Crédits_Demandé , sum(case when LoanStatus = '2' and MONTH(LoanAccount.IssueDate) = 2 then 1 else 0 end ) as Nombre_de_Crédits_Approuvé 

Du kannst dein Ziel durch diese Abfrage erreichen.

 select branches.name as agence ,(select COUNT(1) from <table_name> where loginstatus=1 and Datepart(month,loanaccount.issuedate)= 2) as nombre_de_credits_demande ,(select COUNT(1) from <table_name> where loginstatus=2 and Datepart(month,loanaccount.issuedate)= 2) as AS nombre_de_credits_approuve from <Table_name>