具有SQL帐户数的每个客户端的脚本
我必须承认我仍然是SQL的新手,我尝试做的是显示客户名称的查询以及客户在其帐户中拥有的帐户数,例如: 表: dbo.Client:具有SQL帐户数的每个客户端的脚本,sql,sql-server,while-loop,Sql,Sql Server,While Loop,我必须承认我仍然是SQL的新手,我尝试做的是显示客户名称的查询以及客户在其帐户中拥有的帐户数,例如: 表: dbo.Client: ClientId PK, BIGINT, NOT NULL Name VARCHAR, NOT NULL Last VARCHAR, NOT NULL RFC VARCHAR, NOT NULL AccountId PK, BIGINT, NOT NULL ClientId FK, BIGINT, NOT NULL NoAccount
ClientId PK, BIGINT, NOT NULL
Name VARCHAR, NOT NULL
Last VARCHAR, NOT NULL
RFC VARCHAR, NOT NULL
AccountId PK, BIGINT, NOT NULL
ClientId FK, BIGINT, NOT NULL
NoAccount VARCHAR, NOT NULL
Balance DECIMAL (18,2),NOT NULL
IsCredit BIT, NOT NULL
dbo.BankAccount:
ClientId PK, BIGINT, NOT NULL
Name VARCHAR, NOT NULL
Last VARCHAR, NOT NULL
RFC VARCHAR, NOT NULL
AccountId PK, BIGINT, NOT NULL
ClientId FK, BIGINT, NOT NULL
NoAccount VARCHAR, NOT NULL
Balance DECIMAL (18,2),NOT NULL
IsCredit BIT, NOT NULL
通过查询了解客户帐户
SELECT *
FROM [dbo].[Clientes] a
INNER JOIN [dbo].[CuentasBancarias] b ON a.ClienteId = b.ClienteId
显示下一个查询:
我想展示的是这个表,其中列“Number Account”
我想在这里对他的每个客户进行计数
SELECT DISTINCT (a.ClienteId),
a.Apellidos, a.Nombre, a.RFC,
'Number Account' AS Temporal
FROM
[dbo].[Clientes] a
INNER JOIN
[dbo].[CuentasBancarias] b ON a.ClienteId = b.ClienteId
我试图创建一个脚本,但我很困惑,而。。。我被阻挡或卡住了
DECLARE @puntocliente BIGINT
DECLARE @Cuentas BIGINT
SET @puntocliente = 1
SET @Cuentas = 0
WHILE @puntocliente <= (SELECT DISTINCT(ClienteId) FROM [dbo].[CuentasBancarias] WHERE ClienteId = @puntocliente)
BEGIN
SET @puntocliente = @puntocliente + 1
WHILE @puntocliente <= @puntocliente
BEGIN
SELECT DISTINCT(ClienteId) FROM [dbo].[CuentasBancarias] WHERE ClienteId = @puntocliente
END
SELECT @puntocliente
SELECT *
FROM [dbo].[Clientes] a
INNER JOIN [dbo].[CuentasBancarias] b ON a.ClienteId = b.ClienteId
WHERE a.ClienteId = @puntocliente
END
DECLARE@puntocliente BIGINT
声明@Cuentas BIGINT
设置@puntoclient=1
设置@Cuentas=0
根据我对您的需求的理解,@puntoclient,您只需要一个计数和一个分组:
SELECT
a.ClienteId,
a.Apellidos,
a.Nombre,
a.RFC,
count(*) AS Temporal
FROM
[dbo].[Clientes] a
INNER JOIN
[dbo].[CuentasBancarias] b ON a.ClienteId = b.ClienteId
GROUP BY
a.ClienteId,
a.Apellidos,
a.Nombre,
a.RFC
编辑:我将计数放在时间列中我将向上投票,以感谢您支持摆脱循环:-)