今天早些时候我得到了一些很大的帮助,但是当我应该在查询中实现它时比我想象的要困难得多。我的真实查询包括几个左连接。
我想添加两列,T3MOutput 和 T1GOutput,显示基于 T3M 和 T1G 列的 10-1 排名。在排名尺度中,最重要的值应该得到 10,最低(负值)应该得到 1。注意!一场赛马在开始时可以少于 15 匹马。在十个最佳值获得 10-1 之后,其余的也应该获得值 1。
小提琴:http ://sqlfiddle.com/#!2/9c5fc/4
我应该在哪里实现这行代码或其他解决方案?我只得到值 1 整个..
(SELECT @row:=11 r) rows
以下是所有代码:
SELECT
base.number as NR,
rank.rpo AS RPO,
rank.rsp AS RSP,
rank.rsv AS RSV,
timer.t3m AS T3M, CASE WHEN @row>1 THEN @row:=@row-1 ELSE 1 END T3MOutput,
timer.t1g AS T1G, CASE WHEN @row>1 THEN @row:=@row-1 ELSE 1 END T1GOutput
FROM round
LEFT JOIN base
ON round.id = base.round_id
LEFT JOIN rank
ON round.id = rank.round_id AND rank.number = base.number
LEFT JOIN timer
ON round.id = timer.round_id AND timer.number = base.number
ORDER BY nr