首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >格式化the

格式化the
EN

Stack Overflow用户
提问于 2011-08-26 11:40:21
回答 2查看 151关注 0票数 1

H所有,

下面是由T中的3-4个查询生成的ResultSet。结果如下所示:

月支付

二00二年一月

二月二百

三月二百

二00二年四月

二00二年六月

七月二百

二00二年八月

二00二年九月

二00二年十月

二00二年十一月

十二月二百

现在,根据用户定义的值,比如说4,我需要像这样排列它们。

月支付

一月;二月;三月;四月

5月;6月;7月;8月

.等等。

如果用户选择了3,那么,

月支付

一月;二月;三月二百

4月;5月;6月

.等等。

我该怎么做?有什么建议吗?谢谢!)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-26 17:27:02

老实说,我不知道如何处理付款,因为您还没有描述过它,下面是一种用回溯sql解决这个问题的方法

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2011-08-26 17:53:06

这里有一个xml解决方案

代码语言:javascript
复制
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, payment
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7204090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档