2016-11-07 4 views
1

私は以下のデータを持っています。どこでもFirstNameは空白です。前の行のNoteの最後にそのNoteデータを結合したいと思います。この例は、並べ替えのないテーブルにデータがどのように表示されるかです。 SQLを介して結果テーブルを達成する方法はありますか?助けてくれてありがとう!2行のデータを連結する

FirstName LastName Note 
--------- ------- -------------------------------------- 
John  Doe  likes bananas 
Steve  Weiss  likes tomatoes and 
         also likes potatoes 
John  Weiss  likes apples 
Jeff  Marki  likes hotdogs 
         and also likes hambugers 
Jenny  Boper  likes peaches 

期待される結果

FirstName LastName Note 
--------- ------- -------------------------------------- 
John  Doe  likes bananas 
Steve  Weiss  likes tomatoes and also likes potatoes       
John  Weiss  likes apples 
Jeff  Marki  likes hotdogs and also likes hamburgers 
Jenny  Boper  likes peaches 
+1

これを使用すると、データベースにデータを格納する方法ではありません。順序がない場合、次の行は任意で、あなたが探している結果を得ることはできません。私はあなたに1〜2時間前に尋ねたように、再び同じ質問を投稿することに何の意味も見ません。 –

+0

@vkp私が1時間前に尋ねた質問は、多くの混乱した人々が実際に私の質問に答えない結果になったので、私はそれを削除して、それをもっと明確にするために再決定しました。私がしたことを超えて混乱を招く質問をするプロセスを処理するより良い方法がありますか?関係なく、私が知りたいと思っていたものを達成することができない場合は、お返事ありがとうございます。 – bmanhard

+1

これは、行シーケンス、すなわちアイデンティティフィールド –

答えて

2
Declare @YourTable table (FirstName varchar(50),LastName varchar(50),Note varchar(500)) 
Insert Into @YourTable values 
('John','Doe','likes bananas'), 
('Steve','Weiss','likes tomatoes and'), 
(''  ,'','also likes potatoes'), 
('John','Weiss','likes apples'), 
('Jeff','Marki','likes hotdogs'), 
('' ,'','and also likes hambugers'), 
('Jenny','Boper','likes peaches') 

Select FirstName 
     ,LastName 
     ,Note  = FullText 
From (
     Select * 
       ,FullText = Note+IIF(Lead(FirstName,1) over (Order By (Select null))='',' '+Lead(Note,1) over (Order By (Select Null)),'') 
     From @YourTable 
    ) A 
Where FirstName <>'' 

戻り

FirstName LastName Note 
John  Doe   likes bananas 
Steve  Weiss  likes tomatoes and also likes potatoes 
John  Weiss  likes apples 
Jeff  Marki  likes hotdogs and also likes hambugers 
Jenny  Boper  likes peaches 

注意してください:

私は秩序を(ヌルを選択))を持つ

、あなたは本当に、すなわちアイデンティティフィールド適切なシーケンス番号を持っている必要があり

1

別の解決策:

DECLARE @TEMP_DATA TABLE 
    (
    ID INT IDENTITY(1,1), 
    FIRSTNAME NVARCHAR(50), 
    LASTNAME NVARCHAR(50), 
    NOTE NVARCHAR(50) 
    ) 

DECLARE @NO_NAME TABLE 
    (
    IDEMPTY INT, 
    EMPTYNAME NVARCHAR(50), 
    EMTPYNAME NVARCHAR(50), 
    NOTE2 NVARCHAR(50) 
    ) 

INSERT INTO @TEMP_DATA 
SELECT * 
FROM DATA 

INSERT INTO @NO_NAME 
SELECT * 
FROM @TEMP_DATA 
WHERE FIRSTNAME='' 

UPDATE @TEMP_DATA 
SET  NOTE=NOTE+' '+NOTE2 
FROM @NO_NAME N 
WHERE ID=IDEMPTY-1 

SELECT FIRSTNAME,LASTNAME,NOTE FROM @TEMP_DATA WHERE NOT FIRSTNAME LIKE '' 
関連する問題