Return Select-Anweisung als formatierten HTML (SQL 2005)

Ich habe einen Datensatz, der wie folgt aussieht:

   Gender | Age | Name
    Male  | 30  | Bill
  Female  | 27  | Jenny
  Female  | 27  | Debby 
   Male   | 44  | Frank

Und ich versuche, um diese als speziell formatierte HTML-code:

    <ul>
      <li>Male
        <ul>
          <li>30
            <ul>
              <li>Bill</li>
            </ul>
          </li>
          <li>44
            <ul>
              <li>Frank</li>
            </ul>
          </li>
        </ul>  
      </li>
    </ul>

    <ul>
      <li>Female
        <ul>
          <li>27
            <ul>
              <li>Jenny</li>
              <li>Debby</li>
            </ul>
          </li>
        </ul>  
      </li>
    </ul>

Versuchte ich mit FOR XML aber das hat nicht geben die Ergebnisse, die ich suchte. Es dauerte nicht entfernen, die mehrere Gender und Age Felder zurückgegeben. Wie Sie sehen können in dieser HTML-es ist der Compoundierung ist es, alle und nur indem Duplikate bei den end-Knoten.

Aaron Bertrand bot eine hervorragende Methode hier Return Select-Anweisung als formatierte HTML, das scheint zu funktionieren perfekt in SQL 2008, aber ich war auf der Suche nach etwas, das arbeitete im Jahr 2005 als gut, außer die kleinen Sachen, wie += Betreiber und Einstellung default DEKLARIEREN Werte, nur nicht die Anzeige in 2005.

Wie würde so etwas wie das erreicht werden, die in SQL Server 2005?

  • Warum nicht einfach änderungen vornehmen, um die Lösung, die es machen würde, 2005 kompatibel? So etwas wie SELECT @html += 'text' können leicht umgeschrieben werden als SELECT @html = @html + 'text'.
  • er sagt, dass er dies getan hat, sondern, dass es nicht ausdrucken keine Ergebnisse. Ich glaube, es gibt einige Informationen, die wir sind, nicht erzählt wird, und es kann nicht die OP Schuld ist, es ist nur hart zu ihm führen, was das Problem sein könnte. Ich habe die Lösung unten, hat die notwendigen Anpassungen vorgenommen und das habe ich überprüft funktioniert auf SQL Server 2005. <zucken>
  • Die Art, wie ich es lese ist, dass die OP einfach nicht wissen, zu übersetzen, wie es bis 2005.
  • sorry, man müsste Lesen Sie den ausführlichen Kommentar Weg auf die andere Frage (stehen in beiden die Frage und die Antwort hier) zu sehen, der hintergrund. Die ursprüngliche Frage war für 2008 - so habe ich 2008 syntax. Die OP konvertiert es bis 2005, und beseitigt die Fehler in der syntax, aber nun behauptet, es nicht tun.
  • Aha, ich sehe. Auch ich begrüße Ihre Lösung mit a +1, denn es sieht wirklich praktisch. 🙂
  • So, jetzt die Antwort, funktioniert auf SQL Server 2005? Pflege zu teilen mit allen, was SIE Taten, falsch?
  • Ich denke, wenn Ihre verschiedenen das einzige, was war Declare @html = NVARCHAR(MAX); SET @html = N''; hatte ich DECLARE @html varchar(MAX); SET @html = '';
  • Weil die Entwicklung der CTE mit einer select-Anweisung wäre nicht off-topic, als der Zweck der Frage.. ?
  • Wenn die Daten, die Sie gepumpt, in der CTE würde zeigen, dass eine Diskrepanz nicht durch die Daten, die Sie ursprünglich enthalten, ja, es sollte Hinzugefügt wurden. Warum denkst du, es wäre nicht relevant?
  • mögliche Duplikate von Return Select-Anweisung als formatierte HTML

Schreibe einen Kommentar