Sql 创建动态查询以打印范围以及与每个范围对应的整数列的总和
例: 有一个包含以下数据的表 数据是动态添加的。 距离差必须为100。 每个范围应显示该范围内所有交易的rateMRP列的总和Sql 创建动态查询以打印范围以及与每个范围对应的整数列的总和,sql,oracle,Sql,Oracle,例: 有一个包含以下数据的表 数据是动态添加的。 距离差必须为100。 每个范围应显示该范围内所有交易的rateMRP列的总和 TransactionID MRP 1 100 2 201 3 301 4 401 5 501 7 100 8 201 9 301 10
TransactionID MRP
1 100
2 201
3 301
4 401
5 501
7 100
8 201
9 301
10 401
11 501
Price Range Sum of MRP
100 - 200 200
201 - 300 402
301 - 400 602
401 - 500 802
501 - 600 1002
您需要使用UNION ALL创建范围,然后才能与表联接
SELECT
CONCAT(t1.start,'-',t1.end) AS `Price Range`,
SUM(t.MRP) as `Sum of MRP`
FROM
test t
JOIN
(SELECT 100 as start,200 as end
UNION ALL
SELECT 200 as start,300 as end
UNION ALL
SELECT 300 as start,400 as end
UNION ALL
SELECT 400 as start,500 as end
UNION ALL
SELECT 500 as start,600 as end) as t1
ON t.MRP>=t1.start and t.MRP<=t1.end
GROUP BY t1.start,t1.end
更新
注意:我使用的是Mysql,我尝试在oracle中编译
如果你想要动力学,那么你可以用这个
set @start = 200;
set @end = 100;
SELECT
CONCAT(t1.start,'-',t1.end) AS `Price Range`,
SUM(t.MRP) as `Sum of MRP`
FROM
test t
JOIN
( SELECT 100 as start,200 as end
UNION ALL
SELECT (@start := @end+1) as start,(@end := @start+99) as end FROM test) as t1
ON t.MRP>=t1.start and t.MRP<=t1.end
GROUP BY t1.start,t1.end
您需要使用UNION ALL创建范围,然后才能与表联接
SELECT
CONCAT(t1.start,'-',t1.end) AS `Price Range`,
SUM(t.MRP) as `Sum of MRP`
FROM
test t
JOIN
(SELECT 100 as start,200 as end
UNION ALL
SELECT 200 as start,300 as end
UNION ALL
SELECT 300 as start,400 as end
UNION ALL
SELECT 400 as start,500 as end
UNION ALL
SELECT 500 as start,600 as end) as t1
ON t.MRP>=t1.start and t.MRP<=t1.end
GROUP BY t1.start,t1.end
更新
注意:我使用的是Mysql,我尝试在oracle中编译
如果你想要动力学,那么你可以用这个
set @start = 200;
set @end = 100;
SELECT
CONCAT(t1.start,'-',t1.end) AS `Price Range`,
SUM(t.MRP) as `Sum of MRP`
FROM
test t
JOIN
( SELECT 100 as start,200 as end
UNION ALL
SELECT (@start := @end+1) as start,(@end := @start+99) as end FROM test) as t1
ON t.MRP>=t1.start and t.MRP<=t1.end
GROUP BY t1.start,t1.end
非常感谢。如果tommorow另一笔交易的MRP为700怎么办。我们的要求是创建另一个动态范围。第二个查询是我需要的,并且正在mysql中工作。@TomG-如果您想要mysql解决方案,为什么要将这个问题标记为[oracle]?谢谢。如果tommorow另一笔交易的MRP为700怎么办。我们的要求是创建另一个动态范围。第二个查询是我所需要的,并且正在mysql中工作。@TomG-如果你想要一个mysql解决方案,为什么要将这个问题标记为[oracle]?