有没有一种方法可以对一栏进行计数,如果> 1,请检查B栏是否满足条件,跳过

时间:2019-04-16 15:11:22

标签: sql-server

我正在编写一个SQL查询,试图在其中查找任何已禁用信用卡且没有第二张活动卡的帐户。使用Select Distinct,我可以将其分解为单独的行,但是我不知道如何编写Case。我当时想我可以使用一个计数来对行进行计数,如果其中某行被列为“活动”,则一起跳过记录。因此,如果帐号显示两次,请检查其中一行是否处于活动状态,如果是,请跳过该帐号。

正如我提到的,我可以解析原始数据并提取帐户中的所有内容,但后半部分使我难以理解。一般来说,我对SQL和编码还很陌生。

SELECT   DISTINCT    dbo.loanacct.column, 

    CASE dbo.account.status
                 When '0' then 'Active'
         When '1' then 'Closed'
    End AS 'Account Status', 
                  dbo.loanacct.total_past_due_balance,

    Case dbo.card.status
        When '0' then 'Active'
        when '1' then 'Disabled'
        When '2' then 'Expired'
    END AS 'Card Status'
FROM            dbo.loanacct 
Where     Loan_group = 'Group'
         AND dbo.loanacct.status_code = 'Status Code'
     AND dbo.loanacct.total_past_due_balance <> '0.00'
         AND dbo.loanacct.status_code_no = '0'
         OR dbo.loanacct_Card_Status IS NU

当前输出看起来像这样:

  Acct# Customer Name Group       Status Code   Acct Status Card Status 
  12345 Name          INSTALLMENT Status        Active      Active 
  12345 NAME          INSTALLMENT Status        Active      Disabled

我想做的是,当上述示例为true时,同一个帐户#但文件上有一个活动卡,该帐户将被跳过,而我在下一个帐户#上将得到一行返回没有存档的活动卡。

Acct# Customer Name Group Status   Code   Acct Status Card Status 
54321 Name          INSTALLMENT    Status Active      Disabled

1 个答案:

答案 0 :(得分:0)

我怀疑这会为您提供答案,或者如果您不满意的话。您感兴趣的aprt是CASE表达式。这还假设54321对于帐号是错误的,应该为12345。如果您有意反转该值,请参阅旁边的注释。

SELECT Acct#, --REVERSE(Acct#)? See comment
       [Customer Name], --it's actually advised against having spaces, and other special characters, in your object names
       [Group Status],  --as you then are forced to always quote them; and that can "break" things if poorly handled.
       Code,
       [Acct Status],
       CASE COUNT(CASE [Card Status] WHEN 'Disabled' THEN 1 END) > 0 THEN 'Disabled' ELSE 'Active'
FROM ...
GROUP BY Acct#,
         [Customer Name],
         [Group Status], 
         Code,
         [Acct Status];

我没有在此处包括FROMWHERE,但是您应该有足够的填写空间。