求助:使用临时表按Bet-Collect-Profit-Roi顺序展示列数据
解决SQL临时表列顺序展示及计算问题
要实现按Bet - Collect - Profit - Roi的顺序展示数据,同时用临时表避免计算误差,需要将INTO temp_table插入到第一个SELECT语句的末尾(FROM子句之前),完整代码如下:
-- 把基础计算结果存入临时表 SELECT Bet = COUNT(*) OVER (), Collect = SUM(CASE WHEN Result = 1 THEN (([BetfairWinSP] - 1) * .95 + 1) END) OVER (), Profit = SUM(CASE WHEN Result = 1 THEN (([BetfairWinSP] - 1) * .95 + 1) END) OVER () - COUNT(*) OVER (), df.RaceDateTime INTO temp_table -- 插入的核心代码,将查询结果写入临时表 FROM dbo.RaceJunction AS rj LEFT OUTER JOIN dbo.UKHRace AS uk ON rj.UKHRaceId = uk.Id LEFT OUTER JOIN dbo.DataForm AS df ON rj.DataFormId = df.Id -- 从临时表读取数据并计算Roi,按指定顺序输出 SELECT Bet, Collect, Profit, Roi = Profit / Bet, RaceDateTime FROM temp_table WHERE (1 = 1)
说明:
- 临时表
temp_table会存储第一个查询计算出的Bet、Collect、Profit和RaceDateTime值,确保后续计算Roi时使用的是同一批聚合结果,避免重复计算带来的误差 - 第二个查询严格按照
Bet - Collect - Profit - Roi的顺序输出列,同时保留了RaceDateTime字段供后续筛选或展示
内容的提问来源于stack exchange,提问作者racepro
相关产品推荐
相关产品推荐

