2016-12-23 120 views
0

我有一個表與冠軍:Letter1,Letter2,Letter3 ......直到6串聯冠軍名1

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

我想在WHILE循環這樣的選擇要求:

@count =1; 
    While (@count<7) 
    begin 
    @letter = **(select [email protected] from ....)** 
    .. 
    end 

我想要的結果是選擇Letter1,Letter2 ...和Coef1,Coef2 ...的值,並將它們插入冠軍結果中。在一個請求中。大膽的請求會起作用嗎?還是應該使用別的東西?

我使用SQL Server 2008的..

+0

請用您正在使用的數據庫標記您的問題。此外,樣本數據和期望的結果將有助於澄清你想要做什麼。 –

+0

請求的結果不清楚,請添加數據示例 –

+0

我編輯了我的第一篇文章,現在清楚了嗎? – almaje

回答

0

假設你正在使用MySQL,你要這樣呢?

select concat(letter, (@count := @count + 1) 
from t cross join 
    (select @count := 0) params 
order by ?? 
limit 7; 
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 
+0

我希望我的查詢如下: – almaje

+0

SELECT LETTER1 FROM'mytable'//// SELECT LETTER2 FROM'mytable'//// SELECT LETTER3 FROM'mytable'...您的代碼是否在執行此操作? – almaje

+0

檢查更新答案 –