本文主要是介绍员工每天干不同的产品,得到不同的产量工资,然后月底需要按月汇总,月度汇总是从上个月26号到这个月25号为一个计算月,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
员工每天干不同的产品,得到不同的产量工资,然后月底需要按月汇总,月度汇总是从上个月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
周丽 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
*/
这篇关于员工每天干不同的产品,得到不同的产量工资,然后月底需要按月汇总,月度汇总是从上个月26号到这个月25号为一个计算月的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!