4

如果这是一个简单的问题,我很抱歉询问如此抱歉。请注意,此问题与 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我遇到问题的功能,因为我不确定如何定义它,以及如何在按功能分组中使用它。

提前致谢

4

1 回答 1

3

听起来这就是你要找的东西——使用 % 运算符来执行 Mod:

select a % 2, sum(b)
from yourtable
group by a % 2

精简的 SQL Fiddle 演示

要将其应用于您的查询,请尝试以下操作:

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 )

于 2013-03-27T00:38:46.600 回答