Vor kurzem musste ich alle Felder einer verknüpften Tabelle abfragen und in einem Feld neu gruppieren. Zu diesem Zeitpunkt kann eine normale Join-Abfrage die Anforderungen nicht erfüllen. Um sie zu erfüllen, ist eine SQL-Funktion erforderlich: ALTER-Funktion dbo.getResCodesByOwnerId(@OwnerId INT) gibt nvarchar(2000) zurück als beginnen DECLARE @codes VARCHAR(2000) Setzen Sie @codes='' Wählen Sie @codes=stuff((Wählen Sie ','+residence_code von crm_owner co left, verbinden Sie crm_owner_residence cor auf co.id=cor.owner_id, wobei co.id=@OwnerId für XML-Pfad('')),1,1,'') @Codes zurückgeben ENDE Nehmen Sie zum Testen die Daten mit der ID = 2 und erhalten Sie das Ergebnis: Wählen Sie (Datenbankname).getResCodesByOwnerId(fr.owner_id) als Zimmercode von t1 fr links zu t2 frd auf fr.owner_id=frd.owner_id Ergebnis: 1101010105,11GU002,1101010104 Ergänzung: SQL STUFF Funktion verkettet Strings Heute habe ich einen Artikel über Parallelität gesehen. Ich habe ihn auch studiert und er war ziemlich gut. Will diesen Effekt.Tabelle tb erstellen(idint, Wert varchar(10)) einfügen in tbvalues(1,'aa') einfügen in tbvalues(1,'bb') einfügen in tbvalues(2,'aaa') einfügen in tbvalues(2,'bbb') einfügen in tbvalues(2,'ccc') gehen /* Zeug(Param1, Startindex, Länge, Param2) Beschreibung: Löschen Sie beginnend bei startIndex (SQL beginnt bei 1, nicht bei 0) Längenzeichen aus param1 und ersetzen Sie dann die gelöschten Zeichen durch param2. */ SELECT-ID, Wert = Zeug ((SELECT ',' + Wert VON tb ALS t WO t .id = tb.id FÜR XML-Pfad('')), 1, 1, '') VON tb GROUP BY-ID Das ist es. Erfasste Informationen /* Titel: Einer der durch ein Feld zusammengeführten Strings (einfache Zusammenführung) Autor: (Nach 18 Jahren Wind und Regen blüht der Schneelotus auf dem Eisberg) Standort: Shenzhen, Guangdong. Beschreibung: Fügen Sie die folgenden Daten entsprechend dem ID-Feld in das Wertefeld ein. ID-Wert ----- ------ 1aa 1 bb 2 aaa 2 bbb 2 ccc Sie müssen das Ergebnis erhalten: ID-Wert ------ ----------- 1 aa,bb 2 aaa, bbb, ccc Das heißt: nach ID gruppieren, Summe der Werte ermitteln (String-Addition) */ --1. In SQL2000 können Sie nur benutzerdefinierte Funktionen verwenden, um die Aufgabe „create table tb(id int, value varchar(10))“ zu lösen. in tb-Werte einfügen (1, 'aa') in tb-Werte einfügen (1, 'bb') in tb-Werte einfügen (2, „aaa“) in tb-Werte einfügen (2, 'bbb') in tb-Werte einfügen (2, „ccc“) gehen Funktion erstellen dbo.f_str(@id varchar(10)) gibt varchar(1000) zurück als beginnen Deklarieren Sie @str varchar(1000) Wählen Sie @str = isnull(@str + ',' , '') + cast(Wert als varchar) aus tb, wobei id = @id return @str Ende gehen --Rufen Sie die Funktion „Select ID, Wert = dbo.f_str(id)“ aus der TB-Gruppe nach ID auf. Löschfunktion dbo.f_str Drop-Tabelle tb --2. Methode zum Erstellen einer Tabelle tb(id int, value varchar(10)) in sql2005 in tb-Werte einfügen (1, 'aa') in tb-Werte einfügen (1, 'bb') in tb-Werte einfügen (2, „aaa“) in tb-Werte einfügen (2, 'bbb') in tb-Werte einfügen (2, „ccc“) gehen Wählen Sie ID, [Wert] = Zeug ((Wählen Sie ',' + [Wert] von tb t, wobei ID = tb.id für XML-Pfad('')), 1, 1, '') von tb nach ID gruppieren Drop-Tabelle tb --3. Verwenden Sie den Cursor, um Daten zusammenzuführen. Erstellen Sie die Tabelle tb (id int, value varchar (10)). in tb-Werte einfügen (1, 'aa') in tb-Werte einfügen (1, 'bb') in tb-Werte einfügen (2, „aaa“) in tb-Werte einfügen (2, 'bbb') in tb-Werte einfügen (2, „ccc“) gehen deklariere @t table(id int,value varchar(100)) - definiere Ergebnismengentabellenvariable - definiere Cursor und Mergeprozess deklariere my_cursor Cursor lokal für wähle ID, Wert aus TB Deklarieren Sie @id_old int, @id int, @value varchar(10), @s varchar(100) öffne my_cursor hol my_cursor in @id , @value wählen Sie @id_old = @id , @s='' während @@FETCH_STATUS = 0 beginnen wenn @id = @id_alt Wählen Sie @s = @s + ',' + Cast(@value als varchar) anders beginnen @t-Werte einfügen(@id_old, stuff(@s,1,1,'')) Wählen Sie @s = ',' + cast(@value as varchar), @id_old = @id Ende hol my_cursor in @id , @value ENDE @t-Werte einfügen(@id_old, stuff(@s,1,1,'')) schließe my_cursor my_cursor freigeben wähle * aus @t Drop-Tabelle tb Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur. Das könnte Sie auch interessieren:
|
<<: Spezifikationen für Hyperlink-Symbole: Verbessern Sie die Lesbarkeit von Artikeln
>>: Verwendung von Docker UI, einem Docker-Visualisierungsverwaltungstool
Inhaltsverzeichnis Vorwort Anwendung Filter Ziehe...
Einführung: Wenn wir MySQL zum Erstellen einer Ta...
Wir sehen oft, dass Anzeigen nach ein paar Sekund...
Verwenden Sie die For-Schleife, um das Zabbix-Ima...
1. Scroll-Ansicht Beim vertikalen Scrollen müssen...
Wenn der img src-Wert leer ist, werden zwei Anfrag...
Vorwort add_header ist eine Direktive, die im Hea...
In diesem Artikel werden hauptsächlich 6 Lösungen...
Die Hauptkonfigurationsdatei von Nginx ist nginx....
1. Laden Sie die erforderlichen Pakete herunter w...
In diesem Beispiel wird jQuery verwendet, um eine...
1. Installationsumgebung Computermodell: Lenovo Y...
Ändern Sie die IP-Adresse der virtuellen Maschine...
In diesem Artikelbeispiel wird der spezifische Co...
In diesem Artikel erfahren Sie, wie Sie mit Vue e...