2016-12-23 2 views
0

Ich habe eine Tabelle mit champ: Letter1, Letter2, Letter3 ... bis 6.Concatenate champ name1

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

ich eine ausgewählte Anfrage in While-Schleife wie diese machen wollen:

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

Das Ergebnis, das ich will, ist, den Wert von Letter1, Letter2 ... und Coef1, Coef2 ... auszuwählen und sie zu multiplizieren, um sie in Champ einzufügen. Ergebnis

Meine Frage ist, wie Letter1, Letter2, ... in einer Anfrage. Wird die mutige Anfrage funktionieren? Oder sollte ich etwas anderes benutzen?

I SQL Server verwendet 2008 ..

+0

Bitte kennzeichnen Sie Ihre Frage mit der Datenbank, die Sie verwenden. Auch Beispieldaten und gewünschte Ergebnisse würden helfen zu klären, was Sie tun möchten. –

+0

Das angeforderte Ergebnis ist nicht klar, bitte fügen Sie ein Datenbeispiel –

+0

Ich bearbeitet meinen ersten Beitrag, ist es jetzt klar? – almaje

Antwort

0

Angenommen, Sie MySQL verwenden, tun Sie so etwas wie dies wollen?

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

Wie ich kommentierte, sind nummerierte Spalten ein gutes Zeichen für ein schlechtes Design.
In diesem Sinne wird Dynamic SQL Ihren Anforderungen gerecht.

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

Ich möchte, dass meine Abfragen wie folgt aussehen: – almaje

+0

SELECT LETTER1 FROM 'MYTABLE' //// SELECT LETTER2 FROM 'MYTABLE' //// SELECT LETTER3 FROM 'MYTABLE' ... Ist Ihr Code während das tun? – almaje

+0

Überprüfen updatd Antwort –