update inspectors
set [熟悉客户1]=MAX(CASE WHEN T2.RN = 1 THEN T2.客户名称 END),
[熟悉客户2]= MAX(CASE WHEN T2.RN = 2 THEN T2.客户名称 END),
[熟悉客户3]=MAX(CASE WHEN T2.RN = 3 THEN T2.客户名称 END),
[独立验货次数]=(SELECT COUNT(验货Leader) + COUNT(兼职Leader)FROM Source WHERE 验货Leader = 中文名 OR 兼职Leader = 中文名),
[合计验货次数]=(SELECT COUNT(验货Leader) + COUNT(兼职Leader) + COUNT(全职Helper1) + COUNT(全职Helper2) + COUNT(全职Helper3) + COUNT(兼职Helper1) + COUNT(兼职Helper2) + COUNT(兼职Helper3)
FROM Source
WHERE 验货Leader = 中文名 OR 兼职Leader = 中文名 OR 全职Helper1 = 中文名 OR 全职Helper2 = 中文名 OR 全职Helper3 = 中文名 OR 兼职Helper1 = 中文名 OR 兼职Helper2 = 中文名 OR 兼职Helper3 = 中文名),
[电器验货次数]=(SELECT COUNT(验货Leader) + COUNT(兼职Leader) + COUNT(全职Helper1) + COUNT(全职Helper2) + COUNT(全职Helper3) + COUNT(兼职Helper1)+ COUNT(兼职Helper2) + COUNT(兼职Helper3)
FROM Source
WHERE (验货Leader = 中文名 OR 兼职Leader = 中文名 OR 全职Helper1 = 中文名 OR 全职Helper2 = 中文名 OR 全职Helper3 = 中文名 OR 兼职Helper1 = 中文名 OR 兼职Helper2 = 中文名 OR 兼职Helper3 = 中文名) AND 产品大类 = '电器'),
[电子验货次数]=(SELECT COUNT(验货Leader) + COUNT(兼职Leader) + COUNT(全职Helper1) + COUNT(全职Helper2) + COUNT(全职Helper3) + COUNT(兼职Helper1)+ COUNT(兼职Helper2) + COUNT(兼职Helper3)
FROM Source
WHERE (验货Leader = 中文名 OR 兼职Leader = 中文名 OR 全职Helper1 = 中文名 OR 全职Helper2 = 中文名 OR 全职Helper3 = 中文名 OR 兼职Helper1 = 中文名 OR 兼职Helper2 = 中文名 OR 兼职Helper3 = 中文名) AND 产品大类 = '电子'),
[日用杂货验货次数]=(SELECT COUNT(验货Leader) + COUNT(兼职Leader) + COUNT(全职Helper1) + COUNT(全职Helper2) + COUNT(全职Helper3) + COUNT(兼职Helper1)+ COUNT(兼职Helper2) + COUNT(兼职Helper3)
FROM Source
WHERE (验货Leader = 中文名 OR 兼职Leader = 中文名 OR 全职Helper1 = 中文名 OR 全职Helper2 = 中文名 OR 全职Helper3 = 中文名 OR 兼职Helper1 = 中文名 OR 兼职Helper2 = 中文名 OR 兼职Helper3 = 中文名) AND 产品大类 = '日用杂货'),
[纺织验货次数]=(SELECT COUNT(验货Leader) + COUNT(兼职Leader) + COUNT(全职Helper1) + COUNT(全职Helper2) + COUNT(全职Helper3) + COUNT(兼职Helper1)+ COUNT(兼职Helper2) + COUNT(兼职Helper3)
FROM Source
WHERE (验货Leader = 中文名 OR 兼职Leader = 中文名 OR 全职Helper1 = 中文名 OR 全职Helper2 = 中文名 OR 全职Helper3 = 中文名 OR 兼职Helper1 = 中文名 OR 兼职Helper2 = 中文名 OR 兼职Helper3 = 中文名) AND 产品大类 = '纺织'),
[家装建材验货次数]=(SELECT COUNT(验货Leader) + COUNT(兼职Leader) + COUNT(全职Helper1) + COUNT(全职Helper2) + COUNT(全职Helper3) + COUNT(兼职Helper1)+ COUNT(兼职Helper2) + COUNT(兼职Helper3)
FROM Source
WHERE (验货Leader = 中文名 OR 兼职Leader = 中文名 OR 全职Helper1 = 中文名 OR 全职Helper2 = 中文名 OR 全职Helper3 = 中文名 OR 兼职Helper1 = 中文名 OR 兼职Helper2 = 中文名 OR 兼职Helper3 = 中文名) AND 产品大类 = '家装建材'),
[运动玩乐验货次数]=(SELECT COUNT(验货Leader) + COUNT(兼职Leader) + COUNT(全职Helper1) + COUNT(全职Helper2) + COUNT(全职Helper3) + COUNT(兼职Helper1)+ COUNT(兼职Helper2) + COUNT(兼职Helper3)
FROM Source
WHERE (验货Leader = 中文名 OR 兼职Leader = 中文名 OR 全职Helper1 = 中文名 OR 全职Helper2 = 中文名 OR 全职Helper3 = 中文名 OR 兼职Helper1 = 中文名 OR 兼职Helper2 = 中文名 OR 兼职Helper3 = 中文名) AND 产品大类 = '运动玩乐'),
[工业品验货次数]=(SELECT COUNT(验货Leader) + COUNT(兼职Leader) + COUNT(全职Helper1) + COUNT(全职Helper2) + COUNT(全职Helper3) + COUNT(兼职Helper1)+ COUNT(兼职Helper2) + COUNT(兼职Helper3)
FROM Source
WHERE (验货Leader = 中文名 OR 兼职Leader = 中文名 OR 全职Helper1 = 中文名 OR 全职Helper2 = 中文名 OR 全职Helper3 = 中文名 OR 兼职Helper1 = 中文名 OR 兼职Helper2 = 中文名 OR 兼职Helper3 = 中文名) AND 产品大类 = '工业品'),
[机械设备验货次数]=(SELECT COUNT(验货Leader) + COUNT(兼职Leader) + COUNT(全职Helper1) + COUNT(全职Helper2) + COUNT(全职Helper3) + COUNT(兼职Helper1)+ COUNT(兼职Helper2) + COUNT(兼职Helper3)
FROM Source
WHERE (验货Leader = 中文名 OR 兼职Leader = 中文名 OR 全职Helper1 = 中文名 OR 全职Helper2 = 中文名 OR 全职Helper3 = 中文名 OR 兼职Helper1 = 中文名 OR 兼职Helper2 = 中文名 OR 兼职Helper3 = 中文名) AND 产品大类 = '机械设备'),
[带领Sorting次数]=(SELECT COUNT(验货Leader) + COUNT(兼职Leader)
FROM Source
WHERE (验货Leader = 中文名 OR 兼职Leader = 中文名 OR 全职Helper1 = 中文名 OR 全职Helper2 = 中文名 OR 全职Helper3 = 中文名 OR 兼职Helper1 = 中文名 OR 兼职Helper2 = 中文名 OR 兼职Helper3 = 中文名) AND 检验类型 = 'Sorting'),
[带领FA次数]=(SELECT COUNT(验货Leader) + COUNT(兼职Leader)
FROM Source
WHERE (验货Leader = 中文名 OR 兼职Leader = 中文名 OR 全职Helper1 = 中文名 OR 全职Helper2 = 中文名 OR 全职Helper3 = 中文名 OR 兼职Helper1 = 中文名 OR 兼职Helper2 = 中文名 OR 兼职Helper3 = 中文名) AND 检验类型 = 'FA'),
[审核报告次数]=(SELECT COUNT(主审) FROM Source WHERE (主审 = 中文名))
FROM inspectors LEFT JOIN
(SELECT * FROM (SELECT 操作员工, 客户名称, COUNT(1) C, ROW_NUMBER() OVER (PARTITION BY 操作员工 ORDER BY COUNT(1) DESC) RN
FROM (SELECT 客户名称, 操作员工 FROM [Source]
UNPIVOT ([操作员工] FOR [TYPE] IN ([验货Leader], [全职Helper1], [全职Helper2], [全职Helper3], [兼职Leader], [兼职Helper1],[兼职Helper2], [兼职Helper3])) U) T
WHERE 操作员工 IS NOT NULL
GROUP BY 操作员工, 客户名称) CTE
WHERE RN <= 3) T2 ON inspectors.中文名 = T2.操作员工
end
出现错误:聚合不应出现在 UPDATE 语句的集合列表中。
原来是用视图写的,没有问题:
SELECT TOP 100 PERCENT T1.验货员ID, T1.编号, T1.中文名, T1.英文名, T1.归属, T1.状态, T1.类型, T1.区域, T1.省份, T1.城市,
MAX(CASE WHEN T2.RN = 1 THEN T2.客户名称 END) AS 熟悉客户1, MAX(CASE WHEN T2.RN = 2 THEN T2.客户名称 END) AS 熟悉客户2,
MAX(CASE WHEN T2.RN = 3 THEN T2.客户名称 END) AS 熟悉客户3,
....................................................................................
------解决思路----------------------
update T1你建的那个视图和表关联更新
SET 列=T2.列
FROM inspectors T1
JOIN 视图 T2 ON T1.唯一值的列=T2.唯一值的列