sql - SQL 查询 TA BioStar
问题描述
我有显示 TA 值的查询,结果将显示如下
SELECT convert(varchar(10),DATEADD(second, dbo.TB_EVENT_LOG.nDateTime, '19700101 00:00:00'),103) as [date] ,left(convert(varchar(10),DATEADD(second, dbo.TB_EVENT_LOG.nDateTime, '19700101 00:00:00'),108),5) as [time],
CASE WHEN dbo.TB_EVENT_LOG.[nReaderIdn] in(539577044) THEN 'F1' WHEN dbo.TB_EVENT_LOG.[nReaderIdn] in(539577051) THEN 'F2' END AS FunctionKey,TB_USER_CUSTOMINFO.sFieldValue8 as EMPLOYEEID
FROM dbo.TB_EVENT_LOG INNER JOIN dbo.TB_USER ON dbo.TB_EVENT_LOG.nUserID = dbo.TB_USER.sUserID INNER JOIN dbo.TB_USER_CUSTOMINFO ON dbo.TB_USER.nUserIdn = dbo.TB_USER_CUSTOMINFO.nUserIdn
where nDateTime > datediff(second, '19700101 00:00:00', DATEADD(DAY, -4, getdate())) and nDateTime < datediff(second, '19700101 00:00:00', getdate())
╔════════════╤═══════╤═════════════╤════════════╗
║ date │ time │ FunctionKey │ EMPLOYEEID ║
╠════════════╪═══════╪═════════════╪════════════╣
║ 21/02/2019 │ 08:37 AM │ F1 │ 19564 ║
╟────────────┼───────┼─────────────┼────────────╢
║ 21/02/2019 │ 04:39 PM │ F2 │ 19564 ║
╟────────────┼───────┼─────────────┼────────────╢
║ 21/02/2019 │ 04:56 PM │ F1 │ 19564 ║
╟────────────┼───────┼─────────────┼────────────╢
║ 21/02/2019 │ 05:49 PM│ F2 │ 19564 ║
╟────────────┼───────┼─────────────┼────────────╢
║ 21/02/2019 │ 05:53 PM │ F1 │ 19564 ║
╟────────────┼───────┼─────────────┼────────────╢
║ 21/02/2019 │ 06:06 PM│ F2 │ 19564 ║
╟────────────┼───────┼─────────────┼────────────╢
║ 21/02/2019 │ 01:26 PM│ F1 │ 19564 ║
╟────────────┼───────┼─────────────┼────────────╢
║ 21/02/2019 │ 01:32 PM│F1 │ 19564 ║
╟────────────┼───────┼─────────────┼────────────╢
║ 21/02/2019 │ 01:33 PM│ F2 │ 19564 ║
╟────────────┼───────┼─────────────┼────────────╢
║ 21/02/2019 │ 01:45 PM│ F1 │ 19564 ║
╟────────────┼───────┼─────────────┼────────────╢
║ 21/02/2019 │ 03:00 PM│ F2 │ 19564 ║
╟────────────┼───────┼─────────────┼────────────╢
║ 21/02/2019 │ 04:38 PM│ F1 │ 19564 ║
╚════════════╧═══════╧═════════════╧════════════╝
结果显示所有出勤时间,即使同一用户每天有多次出勤。
如果有人可以帮助我需要,仅显示每个日期的最小值 F1 和最大值 F2,员工 ID
╔════════════╤═══════╤═════════════╤════════════╗
║ date │ time │ FunctionKey │ EMPLOYEEID ║
╠════════════╪═══════╪═════════════╪════════════╣
║ 21/02/2019 │ 08:37 AM│ F1 │ 19564 ║
╟────────────┼───────┼─────────────┼────────────╢
║ 21/02/2019 │ 06:06 PM│ F2 │ 19564 ║
╚════════════╧═══════╧═════════════╧════════════╝
解决方案
为了在同一列显示结果,我做了一些更改,
SELECT EmployeeID,date,FunctionKey,
CASE when FunctionKey='F1' then min(time) else max(time) end as Final_Time
FROM [TA] group by date,EmployeeID,FunctionKey;
这里的结果将显示 F1 的最小时间值和 F2 每个 EmployeeID 的最小时间值,同一列的日期,我再次不确定您使用的是什么时间类型,也许您可以将当前格式转换为 24 小时格式,然后解决。
推荐阅读
- sql - 使用 SQL Server 更改列名的问题
- android - TextView 在可见性更改后丢失 Alpha 信息(当 animateLayoutChange 为 true 时)
- java - 是否可以通过这种方式检查二维数组中的所有元素是否相同?
- uwp - UWP 缩放树视图内的文本块 - 文本换行
- amazon-web-services - -bash:询问:找不到命令
- php - 是否可以从 laravel pluck() 生成关联数组
- python - Tensorboard 日志中的峰值 - PPO2 稳定基线
- python - 如何导入站点包的模块而不是当前目录中同名的模块(python 3.x)?
- xml - 如何在 MS Access 中从 VBA 创建 UTF-8 编码的 XML 文件?
- r - dplyr 将变量传递给函数以动态排列 cols