【发布时间】:2015-02-05 16:21:36
【问题描述】:
我在尝试使用我需要的数据进行查询时遇到了一个真正的问题。我尝试了几种方法都没有成功。我可以通过 4 个单独的查询获取数据,只是无法将下摆纳入 1 个查询。所有数据来自 1 个表。我会列出尽可能多的信息。
我的数据如下所示。我有一个customerID 和 3 列记录谁曾为该客户以及分配的帐户经理处理记录
RecID_Customer___CreatedBy____LastUser____AcctMan
1-------1374----------Bob Jones--------Mary Willis------Bob Jones
2-------1375----------Mary Willis------Bob Jones--------Bob Jones
3-------1376----------Jay Scott--------Mary Willis-------Mary Willis
4-------1377----------Jay Scott--------Mary Willis------Jay Scott
5-------1378----------Bob Jones--------Jay Scott--------Jay Scott
我希望查询返回以下数据。请参阅下文,了解如何获得每种方法的说明。
Employee___Created__Modified__Mod Own__Created Own
Bob Jones--------2-----------1---------------1----------------1
Mary Willis------1-----------2---------------1----------------0
Jay Scott--------2-----------1---------------1----------------1
Created = 统计每个员工创建的记录数
已修改 = 员工列为最后用户的记录数 (他们创建记录的地方除外)
Mod Own = LastUser = Acctman 的每个记录数 (客户经理)
Created Own = 员工创建的记录数 该客户的客户经理
我可以从查询中得到每一个,只需要以某种方式组合它们:
Select CreatedBy, COUNT(CreatedBy) as Created
FROM [dbo].[Cust_REc] GROUP By CreatedBy
Select LastUser, COUNT(LastUser) as Modified
FROM [dbo].[Cust_REc] Where LastUser != CreatedBy GROUP By LastUser
Select AcctMan, COUNT(AcctMan) as CreatePort
FROM [dbo].[Cust_REc] Where AcctMan = CreatedBy GROUP By AcctMan
Select AcctMan, COUNT(AcctMan) as ModPort
FROM [dbo].[Cust_REc] Where AcctMan = LastUser AND NOT AcctMan = CreatedBy GROUP By AcctMan
有人能找到这样做的方法吗?我可能必须将表连接到自身,但我的尝试没有给我正确的数据。
【问题讨论】:
-
你想避免子查询吗?
-
子查询没问题。
-
SlimsGhost 的第一个答案很棒。我没想过使用这样的员工参考表.....太棒了!
标签: sql sql-server sql-server-2008