H所有,
下面是由T中的3-4个查询生成的ResultSet。结果如下所示:
月支付
二00二年一月
二月二百
三月二百
二00二年四月
二00二年六月
七月二百
二00二年八月
二00二年九月
二00二年十月
二00二年十一月
十二月二百
现在,根据用户定义的值,比如说4,我需要像这样排列它们。
月支付
一月;二月;三月;四月
5月;6月;7月;8月
.等等。
如果用户选择了3,那么,
月支付
一月;二月;三月二百
4月;5月;6月
.等等。
我该怎么做?有什么建议吗?谢谢!)
发布于 2011-08-26 17:27:02
老实说,我不知道如何处理付款,因为您还没有描述过它,下面是一种用回溯sql解决这个问题的方法
declare @t table([Month] varchar(12), Payment int)
declare @uservalue int
set @uservalue = 3
insert @t values('January',200)
insert @t values('February', 200)
insert @t values(' March', 200)
insert @t values('April', 200)
insert @t values('May', 200)
insert @t values('June', 200)
insert @t values('July', 200)
insert @t values('August', 200)
insert @t values('September', 200)
insert @t values('October', 200)
insert @t values('November', 200)
insert @t values('December', 200)
;with a as(
select month, payment, rn = row_number() over (order by (select 1))
from @t
), b as
(
select cast(month as varchar(200)) month, payment, rn
from a where (rn - 1) % @uservalue = 0
union all
select cast(b.month +';'+ a.month as varchar(200)), a.payment, a.rn
from b join a on a.rn - 1 = b.rn and b.rn %@uservalue > 0
)
select month, payment from b where rn % @uservalue = 0发布于 2011-08-26 17:53:06
这里有一个xml解决方案
declare @t table([Month] varchar(12), Payment int)
declare @uservalue int
set @uservalue = 3
insert @t values('January',200)
insert @t values('February', 200)
insert @t values(' March', 200)
insert @t values('April', 200)
insert @t values('May', 200)
insert @t values('June', 200)
insert @t values('July', 200)
insert @t values('August', 200)
insert @t values('September', 200)
insert @t values('October', 200)
insert @t values('November', 200)
insert @t values('December', 200)
;WITH x AS ( select payment, rn = (row_number() over(order by (select 1)) - 1)/@uservalue, month
FROM @t
)
SELECT REPLACE(STUFF((
SELECT ',' + [month]
FROM x t
WHERE t.rn = x.rn
for xml path(''), type
).value('.', 'varchar(max)'), 1, 1, ''), ',', ' ') [month], payment FROM x
GROUP BY rn, paymenthttps://stackoverflow.com/questions/7204090
复制相似问题