2012-04-05 5 views
1

Je voudrais concaténer deux champs de texte de la ligne en cours avec le même champ de la ligne suivanteSélectionnez la ligne suivante

Donc, si la table est comme

field1 field2 field3 

text1 text3 order1 
text2 text4 order1 

je voudrais faire:

if (field3.current_row = field3.next_row) 
    SELECT field1 + getNextRow(field1) as "Concatenated Field" FROM table 

Est-ce possible?

+5

Vous devez trouver un moyen d'identifier le * enregistrement actuel * et * enregistrement suivant *. Si vous ne pouvez pas définir les critères de recherche de ces enregistrements, cette question ne peut pas être résolue. – Yuck

+0

Vous pouvez le faire en utilisant row_number et une jointure triangulaire. S'il vous plaît voir le lien suivant http://www.sqlservercentral.com/Forums/Topic483631-338-1.aspx –

+0

Avez-vous une colonne ID dans la table ou juste field1 et field2? –

Répondre

2

vous pouvez faire quelque chose de similaire à ceci:

create table #temp 
(
    field1 varchar(50), 
    field2 varchar(50) 
) 

insert into #temp values ('text1', 'text3') 
insert into #temp values ('text2', 'text4') 

;with cte as 
(
    select *, row_number()over(order by field1) as rownum 
    from #temp 
) 
SELECT * 
FROM 
(
    select c1.field1 + ' ' + (SELECT field1 FROM cte c2 WHERE c2.rownum = c1.rownum + 1) as ConcField 
    from cte c1 
) c 
where c.concfield is not null 

drop table #temp 
3

Si vous êtes déjà sur SQL Server , vous pouvez effectuer les opérations suivantes:

SELECT field1 + lead(field1) over (order by field1) as "Concatenated Field" 
from table 
Questions connexes