我们有一个表来捕获每个人的滑动记录employee
。我正在尝试编写一个查询,以通过今天的第一次滑动来获取不同员工记录的列表。
我们将刷卡日期信息保存在datetime
柱子。这是我的查询抛出的异常。
select distinct
[employee number], [Employee First Name]
,[Employee Last Name]
,min([DateTime])
,[Card Number]
,[Reader Name]
,[Status]
,[Location]
from
[Interface].[dbo].[VwEmpSwipeDetail]
group by
[employee number]
where
[datetime] = CURDATE();
出现错误:
列“Interface.dbo.VwEmpSwipeDetail.Employee First Name”在选择列表中无效,因为它未包含在聚合函数或 GROUP BY 子句中。
有什么帮助吗?
提前致谢。
错误说明了一切:
...“员工名字”在选择列表中无效,因为它不包含在内
在聚合函数或 GROUP BY 子句中
话虽如此,还有其他栏目也需要关注。
要么将返回的列减少到仅需要的列,要么将这些列包含在您的GROUP BY
子句或添加聚合函数 (MIN/MAX)。另外,你的WHERE
子句应放在GROUP BY
.
Try:
select distinct [employee number]
,[Employee First Name]
,[Employee Last Name]
,min([DateTime])
,[Card Number]
,min([Reader Name])
from [Interface].[dbo].[VwEmpSwipeDetail]
where CAST([datetime] AS DATE)=CAST(GETDATE() AS DATE)
group by [employee number], [Employee First Name], [Employee Last Name], [Card Number]
我已经删除了status
and location
因为这可能会返回非不同的值。为了返回此数据,您可能需要一个子查询(或 CTE),它首先获取该数据的唯一 IDSwipeDetails
表,您可以从此列表中加入其他数据,例如:
SELECT [employee number],[Employee First Name],[Employee Last Name].. -- other columns
FROM [YOUR_TABLE]
WHERE SwipeDetailID IN (SELECT MIN(SwipeDetailsId) as SwipeId
FROM SwipeDetailTable
WHERE CAST([datetime] AS DATE)=CAST(GETDATE() AS DATE)
GROUP BY [employee number])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)