连接冠军name1

时间:2016-12-23 11:27:36

标签: sql sql-server database sql-server-2008

我有一张冠军桌:Letter1,Letter2,Letter3 ......直到6。

Structure of my table:  
TYPEID | BenefitsID | Letter1 | Coef1 | Letter2 | Letter3 | Coef3 | Letter4 | Coef4 | Letter5 | Coef5 | Letter6 | Coef6 |  Resultat

我想在WHILE循环中发出一个select请求,如下所示:

 @count =1;
    While (@count<7)
    begin
    @letter = **(select letter+@count from ....)**
    ..
    end

我想要的结果是选择Letter1,Letter2 ......和Coef1,Coef2 ......的值并将它们相乘以在冠军Resultat中插入它们

我的问题是如何在一个请求中选择Letter1,Letter2,....大胆的请求会起作用吗?或者我应该使用其他东西吗?

我使用的是SQL Server 2008 ..

2 个答案:

答案 0 :(得分:0)

假设你使用的是MySQL,你想要这样的东西吗?

select concat(letter, (@count := @count + 1)
from t cross join
     (select @count := 0) params
order by ??
limit 7;

答案 1 :(得分:0)

正如我评论的那样,数字列表示设计不良的良好指示 话虽如此,动态SQL将满足您的需求。

declare @count  int = 1
       ,@stmt   nvarchar(max)

While (@count<7)
begin
    set @stmt = 'select Letter' + cast(@count as varchar(10))  + ' from mytable'
    exec sp_executesql @stmt
    set @count = @count + 1
end