0

以下のコードで奇妙なエラーが発生します。No column was specified for column 2 of 'no1'. 私が知る限り、それはうまくいくはずです。私は単に、顧客がレシート tbl に複数存在する顧客に関する詳細のコレクションを取得しようとしています。

SELECT
    CM.ClientID,
    CPN.Birthdate,
    CM.ClientPassword
FROM 
    dbo.ClientMaster AS CM
    JOIN dbo.ClientPerson AS CPN ON (CM.ClientID = CPN.ClientID)
    JOIN dbo.ClientProduct AS CP ON (CPN.ClientID = CP.ClientID)
WHERE 
    CM.ClientID IN (
                    SELECT 
                        no1.ClientID 
                    FROM 
                        (
                        SELECT 
                            CM.ClientID,
                            COUNT(*)
                        FROM 
                            dbo.ClientMaster AS CM
                            JOIN dbo.ClientPerson AS CPN ON (CM.ClientID = CPN.ClientID)
                            JOIN dbo.ClientProduct AS CP ON (CPN.ClientID = CP.ClientID)
                        WHERE
                            CP.PolicyNo IN (SELECT PolicyNo FROM Receipts)
                            AND CM.ClientID IS NOT NULL
                            AND Birthdate IS NOT NULL
                            AND ClientPassword IS NOT NULL
                        GROUP BY
                            CM.ClientID
                        HAVING 
                            COUNT(*)>1
                        ) AS no1
                    )

解決

ああ、 の が必要ないことに気づいていませんでしCount(*)Select。みんなありがとう!これが私が最終的に行ったものです。

SELECT DISTINCT
    CM.ClientID,
    CPN.Birthdate,
    CM.ClientPassword
FROM 
    dbo.ClientMaster AS CM
    JOIN dbo.ClientPerson AS CPN ON (CM.ClientID = CPN.ClientID)
    JOIN dbo.ClientProduct AS CP ON (CPN.ClientID = CP.ClientID)
WHERE 
    CM.ClientID IN (
                        SELECT 
                            ClientID 
                        FROM 
                            Receipts
                        GROUP BY
                            ClientID
                        HAVING 
                            COUNT(*)>1
                        )
    AND CM.ClientID IS NOT NULL
    AND Birthdate IS NOT NULL
    AND ClientPassword IS NOT NULL
4

2 に答える 2

2

COUNT(*)列には、次のような名前が必要です。

 COUNT(*) AS RecordCount
于 2012-07-03T08:22:50.073 に答える
1

そのために同じクエリを 2 回ネストする必要はありません。代わりにこれを行うことができます:

SELECT
    CM.ClientID,
    CPN.Birthdate,
    CM.ClientPassword
FROM 
    dbo.ClientMaster AS CM
    JOIN dbo.ClientPerson AS CPN ON (CM.ClientID = CPN.ClientID)
    JOIN dbo.ClientProduct AS CP ON (CPN.ClientID = CP.ClientID)
GROUP BY CM.ClientID, CPN.Birthdate, CM.ClientPassword
HAVING COUNT(CM.ClientID) > 1
于 2012-07-03T08:31:14.547 に答える