【发布时间】:2014-05-26 16:02:07
【问题描述】:
我正在使用此查询来获取每位员工两周的总工资期。
select FullName
,[Sunday] = SUM([Sunday])
,[Monday] = SUM([Monday])
,[Tuesday] = SUM([Tuesday])
,[Wednesday] = SUM([Wednesday])
,[Thursday] = SUM([Thursday])
,[Friday] = SUM([Friday])
,[Saturday] = SUM([Saturday])
, Total=SUM(ISNULL([Sunday],0)+ISNULL([Monday],0)+ISNULL([Tuesday],0)+ISNULL([Wednesday],0)+ISNULL([Thursday],0)+ISNULL([Friday],0)+ISNULL([Saturday],0))
from
(Select UserId_Fk,ISNULL(CAST(CountHours as decimal(18,2)),0)as CountHours,[Day],CheckIn
from CheckInCheckOut)
as convertedtable
inner join Users
on convertedtable.UserId_Fk=Users.UserId
PIVOT
(
SUM(CountHours)
FOR Day
IN([Sunday],[Monday],[Tuesday],[Wednesday],[Thursday],[Friday],[Saturday])
)
as PivotTable where CheckIn between @startdate and @enddate
GROUP BY FullName
end
输出是这样的:
如何更新我的查询以将其显示为:
Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Tuesday Wednesday Tursday Friday Saturday **Total**
数据库中的数据是:
编辑 我有一个名为 Paperiod 的表格,其中列出了当年的所有支付期:
表格的第一行是:
Monday 21 Apr 2014 - 4 May 2014
![enter image description here][3]
示例将不胜感激。
【问题讨论】:
-
第一个星期日是哪个星期日?一个支付期是从 2014-05-04 到 2014-05-17,还是从 2014-05-11 到 2014-05-24?
-
我很好奇您是如何填充 Day 列的。例如,第一行中的所有日期均指 2014-05-15,即星期四,但 Day 列有星期三。您的查询是否基于 Day 列的内容?还是基于日期字段之一?
-
@DavidDubois 请查看更新。我带来了当天的数据。
-
你不能有两次相同的别名,你必须在表示层解决这个问题
标签: sql sql-server-2008 pivot-table common-table-expression