【发布时间】:2016-08-17 12:55:26
【问题描述】:
大家好,我正在使用以下查询来获取一些数据:
SELECT DISTINCT
CAST(APL.ProjectID AS nvarchar(4000)) AS ProjectID,
CAST(APL.StatusOrder AS nvarchar(4000)) AS StatusOrder,
CAST(APL.DateModified AS nvarchar(4000)) AS DateModified,
CAST(APL.PType AS nvarchar(4000)) AS PType,
CAST(APL.PName AS nvarchar(4000)) AS PName,
CAST(APL.PostDate AS nvarchar(4000)) AS PostDate,
CAST(APL.TBillID AS nvarchar(4000)) AS TBillID,
CAST(APL.Rate AS nvarchar(4000)) AS Rate,
CAST(APL.Amount AS nvarchar(4000)) AS Amount,
CAST(P.PContact AS nvarchar(4000)) AS PContact,
CAST(P.PEMail AS nvarchar(4000)) AS PEMail,
CAST(P.PPhone AS nvarchar(4000)) AS PPhone,
CAST(P.PFax AS nvarchar(4000)) AS PFax,
CAST(APL.CompDate AS nvarchar(4000)) AS CompDate,
CAST(PS.Comments AS nvarchar(4000)) AS Comments,
CAST(PS.PSID AS nvarchar(4000)) AS PSID,
CAST(PS.Status AS nvarchar(4000)) AS Status
FROM [billing].[dbo].[ActiveProjList] AS APL
INNER JOIN [billing].[dbo].[tblPro] AS P ON APL.ProjectID = P.ProjectID
INNER JOIN [billing].[dbo].[tblPStatus] AS PS ON APL.ProjectID = PS.ProjectID
但是,这会返回 141 的记录数。返回的正确记录应该只有46。
我可以用来查看是否有任何重复的列是 ProjectID。
【问题讨论】:
-
您是否尝试过使用 GROUP BY ProjectID?
-
其他栏目呢?
MIN, MAX, AVG etc.? -
@Jonny:如果我这样做,我会收到错误 Msg 8120, Level 16, State 1, Line 3 列 'ActiveProjList.StatusOrder' 在选择列表中无效,因为它不包含在内在聚合函数或 GROUP BY 子句中。
标签: sql-server duplicates inner-join distinct sql-server-2014