繁体   English   中英

是否可以将“ case”与“ count”一起使用?

[英]Is it possible to use 'case' with and in 'count'?

是否可以使用casecount

 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

请帮我

您可以将其与count() 我更喜欢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é

您的代码的问题不是count()sum()而是两种不同case语法的混合。 case <var> when <val>使用case <var> when <val> ,不能包含任何其他条件。 只需when具有所需的全部条件when使用。

而且,如果您愿意,可以使用count()代替sum()

而且,为简洁起见,我更喜欢month()函数:

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é

您可以通过此查询实现目标。

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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM