我有"任务"按系统定义(Project Server)。
对于每个任务行,有多个列正在使用,某些任务可能具有不同的日期和其他信息,但我想计算或合并在两列中具有相同数据的记录:"Tool ID"
和"Activity type"
例如:
Task Index Finish Date Activity type Tool ID ...
741 3/20/2016 T1 100123
742 3/28/2016 Delay T1 100123
743 4/2/2016 T1 100123
744 4/10/2016 T2 100123
...
...
我希望将具有类似工具ID和活动类型(索引:741,743)的2条记录计为1。
忽略输出中我需要的日期,索引和其他列,但我的报告中有一个字段或其他内容,它将计算" 100123"的组合。和" T1"为1。
尝试了不同的,分组的和其他一些技巧,但它没有用。
答案 0 :(得分:0)
也许你可以连接这两个字段并将它们区分开来:
count(distinct (tool_id||activity_type))
答案 1 :(得分:0)
使用CTE执行计数,然后将其与原始数据合并。
WITH CTE1 AS (
SELECT [Tool ID], [Activity type], COUNT(*) [MyCount]
FROM @MyTable
GROUP BY [Tool ID], [Activity type]
)
SELECT A.*, C.MyCount
FROM @MyTable A INNER JOIN CTE1 C
ON A.[Activity type] = C.[Activity type] AND
A.[Tool ID] = C.[Tool ID]
答案 2 :(得分:0)
尝试以下查询
DECLARE @Tbl TABLE ([Task Index] INT, [Finish Date] DATETIME, [Activity type] NVARCHAR(50), [Tool ID] INT)
INSERT INTO @Tbl VALUES (741, N'3/20/2016', 'T1', 100123)
INSERT INTO @Tbl VALUES (742, N'3/28/2016', 'Delay T1', 100123)
INSERT INTO @Tbl VALUES (743, N'4/2/2016', 'T1', 100123)
INSERT INTO @Tbl VALUES (744, N'4/10/2016', 'T2', 100123)
SELECT
COUNT(*) AS YourCount -- Output 3
FROM
(
SELECT DISTINCT
T.[Activity type],
T.[Tool ID]
FROM
@Tbl T
) A