【发布时间】:2020-05-02 07:09:52
【问题描述】:
我正在尝试创建一个查询以获得如下图所示的结果。
每人一条线。
问题是,当我创建查询时,我仅将它们用于 WHEN CLAUSE 的字段(我什至不需要将它们显示为结果),它显示为要求添加它们的错误到 GROUP CLAUSE 或 AGGREGATE FUNCTIONS。这可能会在我的结果中为每个用户创建重复的行。
如果我将 UserLogon、JobPageFormat 和 JobIsDuplex 放在 group 子句中,我的查询就会运行。
我使用的数据库是 MS SQL Server 2008
请看我的sql查询
select UserLogon, count(TrackingId) as Jobs,
case
when JobPageFormat = 'A3' then SUM(TrackingPageCount*2)
when JobPageFormat != 'A3' then SUM(TrackingPageCount)
end as Total_Pages,
case
when JobPageFormat = 'A3' then SUM(TrackingColorPageCount*2)
when JobPageFormat != 'A3' then SUM(TrackingColorPageCount)
end as Color_Pages,
case
when JobPageFormat = 'A3' then (SUM(TrackingPageCount*2) - SUM(TrackingColorPageCount*2))
when JobPageFormat != 'A3' then (SUM(TrackingPageCount) - SUM(TrackingColorPageCount))
end as Mono_Pages,
case
when JobPageFormat = 'A3' and JobIsDuplex = 0 then SUM(TrackingPageCount*2)
when JobPageFormat != 'A3' and JobIsDuplex = 0 then SUM(TrackingPageCount)
end as Simplex,
case
when JobPageFormat = 'A3' and JobIsDuplex = 1 then SUM(TrackingPageCount*2)
when JobPageFormat != 'A3' and JobIsDuplex = 1 then SUM(TrackingPageCount)
end as Duplex
from scTracking
where ComputerName like '%ServerXXX%'
and JobType in (1,2,3)
and StartDateTime > '2019-09-01'
and StartDateTime < '2019-10-01'
group by UserLogon, JobPageFormat, JobIsDuplex
order by UserLogon
在下面查看我得到的结果
有谁知道如何在不重复结果的情况下进行此查询?
亲切的问候, 卢西亚诺
【问题讨论】:
-
从您的
GROUP BY中删除这两项:JobPageFormat、JobIsDuplex,并在GROUP BY中添加您正在使用SUM的列 -
任何被聚合的字段都需要在
GROUP BY子句中。同意@RyanWilson。 -
如果您提供一些示例输入和预期输出,您将得到更好的答案。
标签: sql sql-server sql-server-2008 sql-server-2012