我们的目标是衡量他们在上个月是否仍然活跃,如果不是上个月,则是用户最后一次活跃的时间。我们存储两个表,Employees和Online Transactions。Online transactions表是从月度报告中构建的,在那里我们可以访问在线平台,并获得所有用户的列表,以及他们的id被激活的日期和最后一次登录的时间。我们会获得对我们来说很重要的其他数据,比如他们在在线平台中的角色以及他们存储了多少数据。
Employee表包含已离开公司的员工的终止日期,以及唯一的id。唯一id就是我们加入到在线表格中的东西。
我们使用这两个表来管理在线工具访问,并按每个平台的单个用户报告平台的总体使用情况。使用了三种不同的平台: Portal、AGOL或Training。Online transactions表将所有这三个存储在同一个表中。
问题是我不知道怎样才能得到我想要的结果。我附加了示例代码,根据结果集我知道它不是我想要的。当然,由于这是PII,我必须删除我的示例结果以删除信息,但仍然显示我遇到了什么问题。
SELECT DISTINCT
U.EMPLOYEE_TRACKING_ID,U.LAST_NAME, U.FIRST_NAME, U.EMAIL_ADDRESS, U.PERSON_TYPE,
U.SERVICE_LINE, U.SUPERVISOR_NAME, U.OFFICE_LOCATION, U.OFFICE_CITY, U.OFFICE_STATE,
U.OFFICE_COUNTRY, U.OFFICE_POSTAL_CODE, U.ACTUAL_TERMINATION_DATETIME, O.FiscalPeriod,
O.Role, O.Source, O.LogDate
FROM dbo.Users U
INNER JOIN dbo.Online_Transactions O ON U.EMPLOYEE_TRACKING_ID = O.TrackingId
WHERE O.Source ='AGOL在示例结果集中,您可以看到有重复的记录,因为我不仅仅将跟踪ID作为distinct的一部分,因此会考虑每个字段的distinct值。
我是否需要进行某种类型的内部选择,才能按office和他们报告的最新日志日期找到不同的用户?例如,我们的记录可以追溯到3.5年前,但我想要的是他们最后一次登录时的所有唯一用户。我可以删除当前用户的终止日期,并保留终止日期,这样我就可以删除已离开的用户。我想我会做一系列的视图来得到每个场景,因此总共会有6个,每个在线类型一个,第二个是终止还是不终止?
如果有人能帮助我学习如何做到这一点。
EMPLOYEE_TRACKING_ID,LAST_NAME,FIRST_NAME,EMAIL_ADDRESS,PERSON_TYPE,SERVICE_LINE,SUPERVISOR_NAME,OFFICE_LOCATION,OFFICE_CITY,OFFICE_STATE,OFFICE_COUNTRY,OFFICE_POSTAL_CODE,ACTUAL_TERMINATION_DATETIME,FiscalPeriod,Role,Source,LogDate
111483,Name4,User4,User4.Name4@mycompany.com,Employee,NULL,,,Melbourne,VIC,Australia,3008,4/30/2021,FY2020-Q4-08,AECOM PUBLISHER,AGOL,2020-09-02 00:00:00.000
111483,Name4,User4,User4.Name4@mycompany.com,Employee,NULL,,,Melbourne,VIC,Australia,3008,4/30/2021,FY2020-Q4-09,AECOM PUBLISHER,AGOL,2020-09-30 00:00:00.000
111483,Name4,User4,User4.Name4@mycompany.com,Employee,NULL,,,Melbourne,VIC,Australia,3008,4/30/2021,FY2021-Q1-11,AECOM PUBLISHER,AGOL,2021-02-02 00:00:00.000
111483,Name4,User4,User4.Name4@mycompany.com,Employee,NULL,,,Melbourne,VIC,Australia,3008,4/30/2021,FY2021-Q1-12,AECOM PUBLISHER,AGOL,2021-03-01 00:00:00.000
111483,Name4,User4,User4.Name4@mycompany.com,Employee,NULL,,,Melbourne,VIC,Australia,3008,4/30/2021,FY2021-Q2-01,AECOM PUBLISHER,AGOL,2021-05-01 00:00:00.000
111483,Name4,User4,User4.Name4@mycompany.com,Employee,NULL,,,Melbourne,VIC,Australia,3008,4/30/2021,FY2021-Q2-02,AECOM PUBLISHER,AGOL,2020-09-02 00:00:00.000
111483,Name4,User4,User4.Name4@mycompany.com,Employee,NULL,,,Melbourne,VIC,Australia,3008,4/30/2021,FY2021-Q2-03,AECOM PUBLISHER,AGOL,2021-01-04 00:00:00.000
113311,Name3,User3,User3.Name3@mycompany.com,Employee,NULL,,,Sydney,NSW,Australia,2000,5/21/2021,FY2020-Q3-06,AECOM COLLECTOR,AGOL,2020-09-02 00:00:00.000
14001627,Name1,User1,user1.name1@mycompany.com,Employee,NULL,,,Melbourne,VIC,Australia,3008,3/3/2021,FY2021-Q1-12,AECOM COLLECTOR,AGOL,2021-02-02 00:00:00.000
14001627,Name1,User1,user1.name1@mycompany.com,Employee,NULL,,,Melbourne,VIC,Australia,3008,3/3/2021,FY2021-Q2-01,AECOM COLLECTOR,AGOL,2021-04-01 00:00:00.000
14001627,Name1,User1,user1.name1@mycompany.com,Employee,NULL,,,Melbourne,VIC,Australia,3008,3/3/2021,FY2021-Q2-02,AECOM COLLECTOR,AGOL,2020-09-02 00:00:00.000
14007604,Name2,User2,User2.Name2@mycompany.com,Employee,NULL,,,Newcastle upon Tyne,POST-TWR,United Kingdom,NE1 2HF,9/30/2020,FY2020-Q2-03,AECOM COLLECTOR,AGOL,2020-09-02 00:00:00.000发布于 2021-08-17 20:28:50
看起来您的Online_Transactions表有多个用户条目?
您可以使用交叉应用来获取一行注释ORDER BY以获取最新的注释
SELECT DISTINCT
U.EMPLOYEE_TRACKING_ID,U.LAST_NAME, U.FIRST_NAME, U.EMAIL_ADDRESS, U.PERSON_TYPE,
U.SERVICE_LINE, U.SUPERVISOR_NAME, U.OFFICE_LOCATION, U.OFFICE_CITY, U.OFFICE_STATE,
U.OFFICE_COUNTRY, U.OFFICE_POSTAL_CODE, U.ACTUAL_TERMINATION_DATETIME,
T.FiscalPeriod, T.Role, T.Source, T.LogDate
FROM dbo.Users AS U
CROSS APPLY (
SELECT TOP 1 O.FiscalPeriod, O.Role, O.Source, O.LogDate
FROM dbo.Online_Transactions AS O
WHERE O.TrackingId = U.EMPLOYEE_TRACKING_ID
AND O.Source = 'AGOL'
ORDER BY O.LogDate DESC
) AS T这也可以使用内部select子查询来完成,但我喜欢这种语法。您可能希望更改外部应用的CROSS APPLY来查看结果,但我通常使用CROSS APPLY,这类似于内连接,因为它只显示与Online_Transaction匹配的用户。
https://stackoverflow.com/questions/68823508
复制相似问题