如何划分 Sql 列
How to Divide Sql Column
我想分享 SQL table 专栏。第一列将以数据的形式包含最多1-10、第二列11-20和第三列21-30的数据。
对 case when expression
使用条件聚合
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
我认为 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
group by 将(例如)1、11、21放在同一行,因为它们对mod操作的结果都是一样的:1. 2、12、22在另一行(mod 结果为 2)。
如果您的要求是1、12 和 23 都在同一行,你必须让你的分组变得更复杂(找到一种方法使 1、12 和 23 在数学上都 return 相同的值..就像 (x%10)-((x/10)+1)
)
我想分享 SQL table 专栏。第一列将以数据的形式包含最多1-10、第二列11-20和第三列21-30的数据。
对 case when expression
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
我认为 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
group by 将(例如)1、11、21放在同一行,因为它们对mod操作的结果都是一样的:1. 2、12、22在另一行(mod 结果为 2)。
如果您的要求是1、12 和 23 都在同一行,你必须让你的分组变得更复杂(找到一种方法使 1、12 和 23 在数学上都 return 相同的值..就像 (x%10)-((x/10)+1)
)