Announcement

Collapse
No announcement yet.

String aus Tabellenwerten zusammensetzten, und diesen in neue Tabelle abfüllen

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

  • String aus Tabellenwerten zusammensetzten, und diesen in neue Tabelle abfüllen

    Hallo
    Wie kann die temporäre Tabelle #temp1 in die Tabelle #temp2 übergeführt werden. Der String, der zu einer bestimmten ad_id gehört kann ich schon bestimmen,

    declare @Keywords varchar(255)
    select @Keywords=isnull(@Keywords + ', ', '') + keyword from #temp1 where ad_id = 714
    select @Keywords
    go

    Resultat:
    -------------------------------------------------------------------------------
    BM-Schulen kaufmännisch D-CH, Jahresbericht, Schriftenreihe DE, Wirtschaft


    nur weiss ich nicht wie das Select-Statement, das mir die Daten für #temp2 zurück gibt, aussehen muss.


    #temp1
    ad_id keyword
    ----------- ----------------------------------------
    714 BM-Schulen kaufmännisch D-CH
    714 Jahresbericht
    714 Schriftenreihe DE
    714 Wirtschaft
    716 BM-Schulen D-CH
    716 BM-Schulen kaufmännisch D-CH
    716 Jahresbericht
    716 Schriftenreihe DE
    718 BM-Schulen kaufmännisch D-CH
    718 Jahresbericht
    721 BM-Schulen kaufmännisch D-CH
    721 Jahresbericht
    721 Schriftenreihe DE
    728 Jahresbericht
    728 Schriftenreihe DE


    #temp2
    ad_id all_keywords
    ----------- -----------------------------------------------------------------------------------------------------------------------------
    714 BM-Schulen kaufmännisch D-CH, Jahresbericht, Schriftenreihe DE, Wirtschaft
    716 BM-Schulen D-CH, BM-Schulen kaufmännisch D-CH, Jahresbericht, Schriftenreihe DE
    718 BM-Schulen kaufmännisch D-CH, Jahresbericht
    721 BM-Schulen kaufmännisch D-CH, Jahresbericht, Schriftenreihe DE
    728 Jahresbericht, Schriftenreihe DE

    Kann mir jemand sagen, wie das entsprechende Select-Statement (select ... into #temp2 from #temp1 ... ) aussehen muss? Besten Dank.

    Herbert

  • #2
    [HIGHLIGHT="SQL"]WITH Temp1 ( ID, Bla) AS
    ( SELECT 714, 'BM-Schulen kaufmännisch D-CH' UNION ALL
    SELECT 714, 'Jahresbericht' UNION ALL
    SELECT 714, 'Schriftenreihe DE' UNION ALL
    SELECT 714, 'Wirtschaft' UNION ALL
    SELECT 716, 'BM-Schulen D-CH' UNION ALL
    SELECT 716, 'BM-Schulen kaufmännisch D-CH' UNION ALL
    SELECT 716, 'Jahresbericht' UNION ALL
    SELECT 716, 'Schriftenreihe DE' UNION ALL
    SELECT 718, 'BM-Schulen kaufmännisch D-CH' UNION ALL
    SELECT 718, 'Jahresbericht' UNION ALL
    SELECT 721, 'BM-Schulen kaufmännisch D-CH' UNION ALL
    SELECT 721, 'Jahresbericht' UNION ALL
    SELECT 721, 'Schriftenreihe DE' UNION ALL
    SELECT 728, 'Jahresbericht' UNION ALL
    SELECT 728, 'Schriftenreihe DE'
    )
    SELECT DISTINCT
    T1.ID
    , STUFF (Blubb, 1, 1 ,SPACE(0))
    FROM Temp1 AS t1
    CROSS APPLY (
    SELECT x.Blubb AS [text()]
    FROM
    (
    SELECT NCHAR(44)+ Bla AS Blubb
    FROM temp1 AS T2
    WHERE t1.ID = T2.ID
    ) AS X
    FOR XML PATH ('')
    ) AS Y (Blubb);

    [/HIGHLIGHT]

    Comment


    • #3
      Hallo und Danke für die rasche Antwort!
      Leider habe ich nicht darauf hingewiesen, dass es sich bei #temp1 nur um einen kleinen Ausschnitt der zu bearbeitenden Tabelle #temp1 handelt: sie umfasst total ca. 43000 Datensätze mit ca. 20000 unterschiedlichen AdressIDs (ad_id). Diesen wiederum sind unterschiedlich viele Keywords zugeordnet...

      Pro ad_id sollte ich nun wie beschrieben den String erzeugen und diesen zusammen mit der zugehörigen ad_id in eine neue Tabelle #temp2 abfüllen.
      Wer weiss, vielleicht kannst du mir ja auch bei diesem weiter gefassten Problem weiter helfen.

      Herbert

      Comment


      • #4
        Hallo,

        nur als Hinweis: Das WITH Temp1... (Zeile 1 - 17) dient in der Lösung von ebis nur zur demonstrativen und temporären Erzeugung der Testdaten! Interessant und die eigentliche Lösung ist nur alles ab dem SELECT DISTINCT in Zeile 18! Damit ist es auch egal, wieviele Datensätze du in deiner Tab wirklich hast.

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          Originally posted by Falk Prüfer View Post
          Hallo,

          nur als Hinweis: Das WITH Temp1... (Zeile 1 - 17) dient in der Lösung von ebis nur zur demonstrativen und temporären Erzeugung der Testdaten! Interessant und die eigentliche Lösung ist nur alles ab dem SELECT DISTINCT in Zeile 18! Damit ist es auch egal, wieviele Datensätze du in deiner Tab wirklich hast.

          Gruß Falk
          ... und dann solltest Du auch noch temp1 durch #temp1 ersetzen...

          Comment


          • #6
            Super, hat bestens funktionier! Herzlichen Dank euch beiden!

            Gruss Herbert

            Comment

            Working...
            X