社区问的人太多了,保存一个备用

--
建立测试环境

set
nocount
on

create
table
test(model
varchar
(
20
),date
int
,qty
int
)

insert
into
test
select
'
a
'
,
'
8
'
,
'
10
'

insert
into
test
select
'
a
'
,
'
10
'
,
'
50
'

insert
into
test
select
'
b
'
,
'
100
'

insert
into
test
select
'
b
'
,
'
9
'
,
'
200
'

insert
into
test
select
'
b
'
,
'
100
'

insert
into
test
select
'
c
'
,
'
200
'

insert
into
test
select
'
d
'
,
'
300
'

insert
into
test
select
'
e
'
,
'
11
'
,
'
250
'

insert
into
test
select
'
e
'
,
'
12
'
,
'
100
'

insert
into
test
select
'
f
'
,
'
150
'

go

--
测试


declare
@sql
varchar
(
8000
)

set
@sql
=
'
select model,
'

select
@sql
=
@sql
+
'
sum(case when date=
'''
+
cast
(date
as
varchar
(
10
))
+
'''
then qty else 0 end)[
'
+
cast
(date
as
varchar
(
10
))
+
'
],
'

from
(
select
distinct
top
100
percent
date

from
test
order
by
date)a


set
@sql
=
left
(
@sql
,
len
(
@sql
)
-
1
)
+
'
from test group by model
'


exec
(
@sql
)




--
删除测试环境

drop
table
test

set
nocount
off



/**/
/*

model 8 9 10 11 12

-------------------- ----------- ----------- ----------- ----------- -----------

a 10 0 50 0 0

b 100 200 100 0 0

c 0 0 200 0 0

d 0 0 300 0 0

e 0 0 0 250 100

f 0 0 0 0 150

*/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。