有没有一种方法可以同时使用 DISTINCT 和 COUNT(*) 来防止您的代码出现重复条目​​?

Is there a way to use DISTINCT and COUNT(*) together to bulletproof your code against DUPLICATE entries?

昨天我得到了一个函数的帮助,可以根据多个 criteria/columns 正确获取列中多个项目的计数。但是,如果有一种方法可以根据聚合的 GROUP BY 语句获取 table 中所有条目的 DISTINCT 计数。

    SELECT      TIME = ap.day,
                acms.tenantId,
                acms.CallingService,
                policyList = ltrim(sp.value),
                policyInstanceList = ltrim(dp.value),
                COUNT(*) AS DISTINCTCount
    FROM        dbo.acms_data acms
    CROSS APPLY string_split(acms.policyList, ',') sp
    CROSS APPLY string_split(acms.policyInstanceList, ',') dp
    CROSS APPLY (select day = convert(date, acms.[Time])) ap
    GROUP BY    ap.day, acms.tenantId, sp.value, dp.value, acms.CallingService

我只想知道是否有办法查看是否有将 DISTINCT 和 Count(*) 一起使用的解决方法,以及它是否会影响我的结果,使该算法可能无法复制条目。

我必须使用 COUNT(*) 的原因是因为我基于 table 中的每一列进行聚合,而不仅仅是特定的一列或多列。

我们可以像这个例子一样使用 DISTINCT 和 COUNT。

USE AdventureWorks2012
GO
-- This query shows 290 JobTitle 
SELECT COUNT(JobTitle) Total_JobTitle 
FROM [HumanResources].[Employee]
GO
-- This query shows only 67 JobTitle 
SELECT COUNT( DISTINCT JobTitle) Total_Distinct_JobTitle
FROM [HumanResources].[Employee]
GO