Announcement

Collapse
No announcement yet.

Stringwerte über mehrere Datensätze zusammenfassen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Stringwerte über mehrere Datensätze zusammenfassen

    Hallo,

    wie kann ich innerhalb einer Stored Procedure Werte aus mehreren Datensätzen zusammenfassen? Einfach ausgedrückt: ein
    Select Name, sum(W) AS W FROM Table1 Group BY Name
    für Zeichenketten.

    Aus
    Name1 W1
    Name2 W2
    Name3 W1
    Name2 W3
    Name1 W2

    Soll werden:
    Name1 W1,W2
    Name2 W2,W3
    Name3 W1

    Bin für jeden Vorschlag dankbar

    Phönix

  • #2
    Hallo,

    mein Vorschlag:
    Code:
    create table dbo.TestTab 
    (
    	ID int identity primary key
    	, Name varchar(10) not null
    	, Wert varchar(10)
    )
    --
    insert into dbo.TestTab (Name, Wert) values ('Name1', 'W1')
    insert into dbo.TestTab (Name, Wert) values ('Name2', 'W2')
    insert into dbo.TestTab (Name, Wert) values ('Name3', 'W1')
    insert into dbo.TestTab (Name, Wert) values ('Name2', 'W3')
    insert into dbo.TestTab (Name, Wert) values ('Name1', 'W2')
    --
    GO
    Create Function dbo.Get_CSV_List
    (
    	@Name varchar(10)
    )
    returns varchar(8000)
    as
    begin
    	declare
    		@Ret varchar(8000)
    	
    	set @Ret = ''
    	
    	select @Ret = @Ret + case when @Ret = '' then '' else ', ' end  + Wert
    	from dbo.TestTab
    	where Name = @Name
    
    	return @Ret
    end
    GO
    select Name, dbo.Get_CSV_List(Name)
    from dbo.TestTab
    group by Name
    GO
    drop function dbo.Get_CSV_List
    drop table dbo.TestTab
    Ist es das was Du wolltest?

    Gruß
    Olaf

    Comment


    • #3
      Originally posted by Olaf Steffan View Post
      Hallo,

      mein Vorschlag:
      Code:
      create table dbo.TestTab 
      (
      	ID int identity primary key
      	, Name varchar(10) not null
      	, Wert varchar(10)
      )
      --
      insert into dbo.TestTab (Name, Wert) values ('Name1', 'W1')
      insert into dbo.TestTab (Name, Wert) values ('Name2', 'W2')
      insert into dbo.TestTab (Name, Wert) values ('Name3', 'W1')
      insert into dbo.TestTab (Name, Wert) values ('Name2', 'W3')
      insert into dbo.TestTab (Name, Wert) values ('Name1', 'W2')
      --
      GO
      Create Function dbo.Get_CSV_List
      (
      	@Name varchar(10)
      )
      returns varchar(8000)
      as
      begin
      	declare
      		@Ret varchar(8000)
      	
      	set @Ret = ''
      	
      	select @Ret = @Ret + case when @Ret = '' then '' else ', ' end  + Wert
      	from dbo.TestTab
      	where Name = @Name
      
      	return @Ret
      end
      GO
      select Name, dbo.Get_CSV_List(Name)
      from dbo.TestTab
      group by Name
      GO
      drop function dbo.Get_CSV_List
      drop table dbo.TestTab
      Ist es das was Du wolltest?

      Gruß
      Olaf
      Hi Olaf

      das das funktioniert... cool... hätte ich mal früher wissen müssen... ich arbeite seit 8 Jahren mit dem SQL-Server und dann sowas ... tztztz... hast Du noch mehr so Tricks...

      Gruß
      Thomas (Der grade mal wieder was gelernt hat)

      Comment

      Working...
      X