无法在我的查询中获得总计数

时间:2012-08-21 13:56:31

标签: sql-server sql-server-2008 tsql

这是我获取总数的查询。

SELECT       
    MemberShipMaster.Id,   
    MemberShipMaster.Name,  
    TotalCount = 
    (
        SELECT
            ISNULL(COUNT(MemberPortfolio.Id), 0) AS total
        FROM
            JFPMembers
            INNER JOIN MemberPortfolio 
                ON JFPMembers.MemberID = MemberPortfolio.MemberId
        WHERE
            JFPMembers.MembershipType = MemberShipMaster.Id 
            AND JFPMembers.IsActive = 1
            AND MemberPortfolio.IsActive = 1
    )  
FROM
    MemberShipMaster
    Left JOIN JFPMembers
        ON MemberShipMaster.Id = JFPMembers.MembershipType   
WHERE
    MemberShipMaster.Id <> 6
GROUP BY
    MemberShipMaster.Id,
    MemberShipMaster.Name
Order by
    MemberShipMaster.Name   

以下是我的表格架构

SELECT [MemberID]        -- PK 
    ,[MembershipType]  --FK , table [MemberShipMaster]
FROM JFPMembers

SELECT [Id]       -- PK
    ,[MemberId] -- FK OF Table JFPMembers         
FROM MemberPortfolio

SELECT [Id]  --PK
    ,[Name]
FROM MemberShipMaster

我需要的是会员资产组合的总数,按MembershipType,即我的关系是这样的,JFPMembers是持有会员信息的主要表格。有3类成员,Premium,Corporate和General。这三种类型存储在MemberShipMaster中。 Ids分别为3,4和5。还有一个用于持有投资组合的表,作为MemberId来关联其各自的成员。

但是我在MemberShipMaster.Id上遇到了一些多值或引用错误。请帮帮我......

1 个答案:

答案 0 :(得分:0)

新守则:

SELECT abb1.Id, abb1.Name,   
TotalCount =  
(SELECT 
        ISNULL(COUNT(abb3.Id), 0) AS total 
    FROM 
        JFPMembers as abb4 
        INNER JOIN MemberPortfolio as abb3 
            ON abb4.MemberID = abb3.MemberId 
    WHERE 
        abb4.MembershipType = abb1.Id  
        AND abb4.IsActive = 1 
        AND abb3.IsActive = 1)   

FROM 
    MembershipMaster as abb1 
    Left JOIN JFPMembers as abb2
        ON abb1.Id = abb2.MembershipType    
WHERE 
    abb1.Id <> 6 
GROUP BY 
    abb1.Id, 
    abb1.Name 
Order by 
    abb1.Name  
相关问题