首页 > 解决方案 > 如何创建一个列来计算 ClientID 中的 AccountID 数量,然后创建一个列来指示这些 ClientID 的状态?

问题描述

我想继续显示 ClientID 列,但我想显示每个 ClientID 中有多少(一个数字)accountID 的列。然后,我还想显示 ClientID 的状态类型“D”或“A”,前提是其各自 ClientID 中的所有 accountID 的所有值都为“D”。目标是在每个 ClientID 中创建一个 accountID 计数列,以及一个显示状态类型的列,其中:

  1. 仅当其中的所有 accountID 都表示为“D”状态时,才会为 clientID 显示“D”
  2. 当任何一个 accountID 被表示为“A”状态时,“A”代表客户端 ID

非常感谢您对此的任何帮助。谢谢!

--what to show:
--Total number of accounts
--Total number of Active
--Total number of disconnected
--GroupedBy ClientID
--my goal is to see which clientids have ALL AccountIDs in 'D' status 

select EN.ClientID, ClientName, VSA.AccountID, VSA.Status
FROM mydb.dbo.Clients CLT WITH(NOLOCK)
JOIN mydb.dbo.EnCustomers EN WITH(NOLOCK)ON EN.ClientID=CLT.ClientID
JOIN mydb.dbo.Vserveraccts VSA WITH(NOLOCK)ON VSA.CustID=EN.EnCustID
INNER JOIN
(select distinct AccountID, count(*) [AccountID Count], Status, count(*) [Status Count]
   from mydb.dbo.Vserveraccts
   group by Status, AccountID) on en.ClientID

  --select distinct Status, count(*) [Status Count]
  --from mydb.dbo.Vserveraccounts
  --group by Status

   --select distinct AccountID, count(*) [AccountID Count]
   --from mydb.dbo.VoipServAccounts
   --group by AccountID

 where CLT.ClientID
 in (
 '72459',
 '83609',
 '83741',
 '79039',

标签: sqlsql-servertsql

解决方案


推荐阅读