2013-03-25 43 views
1

这是问题所在。我有四列,我想在选择查询中提供。 但是,我希望RSV列具有10-1的比例而不是其+和 - 值。 +8,6应该得到10几个值的底部可以有1 数量最多我absolutley不知道如何解决这个问题?将值转换为前10个比例

Nr为赛马起始号码。 种族也可以包含不到十五匹

 
    Nr RPO RSP  RSV
1 10 9 +5,3 2 9 10 +8,6 3 8 7 -2,7 4 7 8 +3,8 5 6 4 +4,3 6 5 6 -1,0 7 4 5 +3,3 8 3 1 +6,6 9 2 1 +2,1 10 1 1 +3,8 11 1 3 +2,9 12 1 2 -2,1 13 1 1 +1,0 14 1 1 -1,0 15 1 1 +2,4

最后一列显示输出:

    
Nr RPO RSP RSV  RSVOutput 
2 9 10 8,6  10 
8 3 1 6,6  9 
1 10 9 5,3  8 
5 6 4 4,3  7 
4 7 8 3,8  6 
10 1 1 3,8  5 
7 4 5 3,3  4 
11 1 3 2,9  3 
15 1 1 2,4  2 
9 2 1 2,1  1 
13 1 1 1  1 
6 5 6 -1  1 
14 1 1 -1  1 
12 1 2 -2,1  1 
3 8 7 -2,7  1 
SELECT * 
FROM rank 
ORDER BY Nr 
+1

你想在'RSV'列中显示10而不是+8,6。那是你想要达到的目标吗?你能发布你的预期输出吗? – 2013-03-25 10:47:08

+0

发布你的预期结果,因为它很难理解你想要什么。 øroxo nyfiken – 2013-03-25 10:55:03

+0

问题是,我应该稍后在交叉表查询中使用值,并且需要相同类型的值。 – Nyfiken 2013-03-25 11:01:09

回答

1

你可以使用这样的事情:

SELECT 
    Nr, RPO, RSP, RSV, 
    CASE WHEN @row>1 THEN @row:[email protected] ELSE 1 END RSVOutput 
FROM 
    yourtable, (SELECT @row:=11) rows 
ORDER BY 
    RSV DESC 

请参阅小提琴here

+0

你真的需要这个r在11附近吗? – 2013-03-25 11:08:37

+0

OP他在他的结果中没有'RSVOutput = 2' – 2013-03-25 11:09:44

+0

'Nr'列是赛马的开始数字。一场比赛也可以包含不到十五匹马。代码在这些情况下工作吗? – Nyfiken 2013-03-25 11:21:38