0

以下のような注文表があり、各グループに関連付けられているすべての注文が同じセルにリストされていますが、コンマ'、'で区切られています。次に、各グループの各注文が異なる行に配置されるように注文を拡張したいと思います。(結果のテーブルは元のテーブルの下にあります)。

SQLでこれを実現する方法を教えてください。

どうもありがとう!

オリジナルのコンパクトテーブルは次のとおりです。

Group   Order
  1      ,a,b
  2      c,d,e
  3      f,g
  4      h

これが最終的な拡張テーブルです。

Group  Order
  1     NULL
  1      a
  1      b
  2      c
  2      d
  2      e
  3      f
  3      g
  4      h
4

2 に答える 2

0

あなたはこのようなことをすることができます、それは私にとって完璧に機能します:

DECLARE @name_2 VARCHAR(MAX), @start INT, @flag bit, @id int ,@name nvarchar(max)

DECLARE c CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY
FOR SELECT name,id FROM table_1;

open c;
FETCH NEXT FROM c INTO @name,@id;

WHILE @@FETCH_STATUS = 0
 BEGIN
   SET @flag = 1 
   SET @start = 0
   WHILE @start < LEN(@name) 
    BEGIN
      SET @start = @start + 1
      SET @name_2 =  SUBSTRING(@name, @start, 1) 
      if (@flag = 1 and @name_2 = ',')
          SET @name_2 = null 
      if(@name_2 <> ',' OR @name_2 is null)
        BEGIN   
           INSERT into dbo.Table_2 (id,name)
           values (@id,@name_2) 
        END
      SET @flag = 0   
    END
  FETCH NEXT FROM c INTO @name,@id;
END

CLOSE c;
DEALLOCATE c;
于 2012-12-02T07:46:54.630 に答える