如何划分Sql列

如何划分Sql列,sql,sql-server,sqlcommand,Sql,Sql Server,Sqlcommand,我想共享SQL表列。第一列将以数据的形式包含最多1-10、第二列11-20和第三列21-30的数据 当表达式为时,将条件聚合与大小写一起使用 select max(case when pagenumber<11 then pagenumber end) as "1-10", max(case when pagenumber<21 and pagenumber>10 then pagenumber end) as "11-20", max(case when pagenumber

我想共享SQL表列。第一列将以数据的形式包含最多1-10、第二列11-20和第三列21-30的数据


当表达式为
时,将条件聚合与
大小写一起使用

select max(case when pagenumber<11 then pagenumber end) as "1-10",
max(case when pagenumber<21 and pagenumber>10 then pagenumber end) as "11-20",
max(case when pagenumber<31 and pagenumber>20 then pagenumber end) as "21-30"
from tablename

选择max(pagenumber时的情况我认为fa06的答案缺少必要的分组

select  
    max(case when (pagenumber-1)/10 = 0 then pagenumber end) as "1-10",
    max(case when (pagenumber-1)/10 = 1 then pagenumber end) as "11-20",
    max(case when (pagenumber-1)/10 = 2 then pagenumber end) as "21-30"
from t
group by (pagenumber%10)
order by 1
我用数学方法进行了分解,但你也可以这样做:

select  
    max(case when pagenumber between 1 and 10 then pagenumber end) as "1-10",
    max(case when pagenumber between 11 and 20 then pagenumber end) as "11-20",
    max(case when pagenumber between 21 and 30 pagenumber end) as "21-30"
from t
group by (pagenumber%10)
order by 1
GROUPBY将(例如)1、11和21放在同一行上,因为它们对mod操作的结果都相同:1.2、12、22放在另一行上(mod结果为2)


如果您的要求是将例如1、12和23全部放在同一行上,则您必须对分组进行更复杂的处理(找到一种方法,使1、12和23在数学上都返回相同的值..例如
(x%10)-(x/10)+1)

请直接共享图片,而不是超链接。这只是一件小事,但我一直认为,根据SQL ISO标准,使用“引用列名”是一种很好的做法-@CaiusJard thank u bro-我一定会记住:)第一列为1-10,第11-20列为第11-20列,但每一列都符合序列号,例如1-2 3 4 5…@fa06;@caius jard;1-10 11-20 21-30值10 20 30