2016-02-28 66 views
1

我必須承認我仍然是SQL的新手,我試圖做的是顯示客戶名稱與客戶在其賬戶中擁有的賬戶數量的查詢例如:腳本對於每個擁有賬戶數量的客戶端SQL

表:

dbo.Client

ClientId PK, BIGINT, NOT NULL 
Name  VARCHAR, NOT NULL 
Last  VARCHAR, NOT NULL 
RFC  VARCHAR, NOT NULL 

dbo.BankAccount

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 

顯示一個查詢:

query

我想表明的是,例如這個表,其中列「號賬戶「 是我想要把他的賬戶的每個客戶的計數類型...

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 

Temporal

我試圖創建一個腳本,但我得到非常困惑與WHILE ...和我堵塞或卡住...

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 

回答

2

據我瞭解您的需求,你只需要一個計數和一組由:

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 

編輯:我把計數時間列

+1

我會upvote這是爲了兌現你的支持,擺脫循環:-) – Shnugo