Jana_ Geschrieben 6. Oktober 2010 Teilen Geschrieben 6. Oktober 2010 Hallo, ich arbeite mit ms sql 2005. Gibt es eine Möglichkeit alle Spalten einer Tabelle zusammenzufassen? Problem dabei, ich kenne weder Namen der Spalten noch wieviele es sind. Ich will also alle Spalten konkatieren. Wenns nur 2 sind gehts ja ganz einfach über das +. (SELECT Name + ' ' + Vorname FROM tbl_Namen) Wie aber nun wenn ich wie gesagt weder Namen noch Anzahl der Spalten kenne? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
plaaner Geschrieben 6. Oktober 2010 Teilen Geschrieben 6. Oktober 2010 Hallo, ich würd sagen select * from tbl_name; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jana_ Geschrieben 6. Oktober 2010 Autor Teilen Geschrieben 6. Oktober 2010 mh... select * ist nunmal nicht das was ich will. ich will alles in nur einer einzigen spalte haben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
.NETter Geschrieben 6. Oktober 2010 Teilen Geschrieben 6. Oktober 2010 Problem dabei, ich kenne weder Namen der Spalten noch wieviele es sind. Bei dieser Variante wirst Du auch Probleme mit den Datentypen bekommen. Ist hier ein int-Wert oder ähnliches dabei wird es nicht funktionieren. Es sei denn Du wandelst ihn explizit in einen kompatiblen Datentyp um. Wenn Du nur Spaltenname und deren Typ anhand des Tabellennamen ermitteln möchtest, könntest Du Systemsichten bemühen: SELECT so.Name AS Tabelle, sc.name AS Feld, st.[name] AS Datentyp FROM sys.objects so LEFT JOIN sys.columns sc ON so.object_id = sc.object_id LEFT JOIN sys.types st ON sc.system_type_id = st.system_type_id WHERE [type] = 'U' AND st.system_type_id = st.user_type_id AND so.[Name] = 'Mitarbeiter' Aber wozu benötigst du eine derartige Konkatenierung der Feldwerte? Vielleicht gibts da noch einen anderen Weg wenn Du das Ziel verrätst. Gruß, Thomas Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 6. Oktober 2010 Teilen Geschrieben 6. Oktober 2010 Mal ganz naiv: SELECT CONCAT(*) FROM Tabelle Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 6. Oktober 2010 Teilen Geschrieben 6. Oktober 2010 Ich verzichte mal darauf irgendwelche Diskussionen über den Sinn der Anforderung anzuzetteln und behaupte, dass es nur die Möglichkeit über dynamisches SQL, oder alternativ eine CLR Funktion gibt. Mein Vorschlag ist folgender: DECLARE @Table SYSNAME DECLARE @cmd2 NVARCHAR(MAX) SET @Table = 't1' SELECT @cmd2 = N'SELECT ' + (STUFF((SELECT N' + '' '' + CAST(' + QUOTENAME(CAST(b.name AS SYSNAME)) + N' as VARCHAR(MAX))' FROM sysobjects a, syscolumns b WHERE a.type = 'U' AND a.id = b.id AND a.name = @Table FOR XML PATH('')),1,6,'')) + N' FROM ' + QUOTENAME(@Table) SELECT @cmd2 EXEC sp_executesql @cmd2 Man verzeihe mir die Verwendung der Aliase a und b Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.