员工每天干不同的产品,得到不同的产量工资,然后月底需要按月汇总,月度汇总是从上个月26号到这个月25号为一个计算月
id 日 期 订单号 产品名称 日产量 产量工资 加 班 工资合计 操作工
1 2015-11-26 06417 aaa 82.25 38 0.00 38 周丽
2 2015-11-26 03706 bbb 11.05 5.19 0.00 5.19 周丽
3 2015-11-26 06417 aaa 10.56 0.26 0.00 0.26 周丽
。。。。。
得到如下表格:
2015年11月26-12月25工资汇总表
姓名 11-26 11-27 11-28 11-29 11-30 12-1 。。。。。。12-25
id 日 期 订单号 产品名称 日产量 产量工资 加 班 工资合计 操作工
1 2015-11-26 06417 aaa 82.25 38 0.00 38 周丽
2 2015-11-26 03706 bbb 11.05 5.19 0.00 5.19 周丽
3 2015-11-26 06417 aaa 10.56 0.26 0.00 0.26 周丽
。。。。。
得到如下表格:
2015年11月26-12月25工资汇总表
姓名 11-26 11-27 11-28 11-29 11-30 12-1 。。。。。。12-25
周丽 43.45 。。。。。。。。。。。。。
use Tempdb
go
--> -->
if
not
object_id(N
'Tempdb..#T'
)
is
null
drop
table
#T
Go
Create
table
#T([id]
int
,[日期]
DATE
,[订单号] nvarchar(50),[产品名称]
VARCHAR
(20),[日产量]
decimal
(18,2),[产量工资]
decimal
(18,2),[加班] MONEY,[工资合计] MONEY,
操作 nVARCHAR(50))
Insert
#T
select
1,
'2015-11-26'
,N
'06417'
,N
'aaa'
,82.25,38,0.00,38,N
'周丽'
union
all
select
2,
'2015-11-26'
,N
'03706'
,N
'bbb'
,11.05,5.19,0.00,5.19,N
'周丽'
union
all
select
3,
'2015-11-26'
,N
'06417'
,N
'aaa'
,10.56,0.26,0.00,0.26,N
'周丽'
GO
DECLARE
@Sql NVARCHAR(
max
)=
''
DECLARE
@Start
DATE
,@
End
DATE
SELECT
@Start=
'2015-11-26'
,@
End
=
'2015-12-25'
WHILE @Start<=@
End
SELECT
@sql=@Sql+
','
+QUOTENAME(
CONVERT
(
VARCHAR
(5),@Start,10))+
'=sum(CASE WHEN [日期]='
+QUOTENAME(@Start,
''
''
)+
' then [工资合计] else 0 end)'
,@Start=DATEADD(dd,1,@Start)
EXEC
(
'Select [操作]'
+@sql+
',sum([工资合计]) as [工资合计] from #T GROUP BY [操作]'
)
/*
操作
11-26 11-27 11-28 11-29 11-30 12-01 12-02 12-03 12-04 12-05 12-06 12-07 12-08 12-09 12-10 12-11 12-12 12-13 12-14 12-15 12-16 12-17 12-18 12-19 12-20 12-21 12-22 12-23 12-24
12-25 工资合计
周丽
43.45 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 43.45
*/