如果这是一个简单的问题,那么我很想知道如此道歉。请注意,此问题与Microsoft Query有关,因为我将结果提取到报告中。
我目前有一个包含多个列的表,包括一列是1到6之间的整数值。我试图根据列中的值是偶数还是奇数来对此列进行分组。根据我的知识,我不知道如何实现这一点(关于我为什么要这样做的一些背景:我使用的表与时间表条目有关,移位栏我指的是白班的奇数值,甚至晚上的值转移)。如果有人可以提供帮助,那就太好了。目前,我有以下代码:
SELECT
PRTH.PostDate, HRRM.LastName, HRRM.FirstName,
Sum(PRTH.Hours) AS 'Sum of Hours',
(PRTH.Shift Mod 2) As 'Night Shift'
FROM
Viewpoint.dbo.HRRM HRRM, Viewpoint.dbo.PRTH PRTH
WHERE
PRTH.Employee = HRRM.PREmp AND PRTH.JCCo = HRRM.PRCo
GROUP BY
PRTH.PostDate, HRRM.LastName, HRRM.FirstName, Night Shift
我遇到问题的是Mod
函数,因为我不知道如何定义它,以及如何在group by by函数中使用它。
提前致谢
答案 0 :(得分:3)
听起来这就是你要找的东西 - 使用%运算符来执行Mod:
select a % 2, sum(b)
from yourtable
group by a % 2
要将此应用于您的查询,请尝试以下操作:
SELECT PRTH.PostDate, HRRM.LastName, HRRM.FirstName,
Sum(PRTH.Hours) AS 'Sum of Hours', (PRTH.Shift % 2) As 'Night Shift'
FROM Viewpoint.dbo.HRRM HRRM
INNER JOIN Viewpoint.dbo.PRTH PRTH
ON PRTH.Employee = HRRM.PREmp AND PRTH.JCCo = HRRM.PRCo
GROUP BY PRTH.PostDate, HRRM.LastName, HRRM.FirstName, PRTH.Shift % 2
另请注意,我使用INNER JOIN
语法替换了您的联接 - 这是更可取的。有关详细信息,请参阅此帖子(https://stackoverflow.com/a/1018825/1073631)