* Aktualisierte - Bitte siehe unten (Hinter dem Bild)rSQL While-Schleife einfügen
ich wirklich mit diesem Problem stecken bin, ich habe zwei Tabellen, Projekte und Projekt Zuteilungen, werden sie von der Projekt-ID verbunden.
Mein Ziel besteht darin, die Spalten einer geänderten Projekttabelle mit den Zeilen der Projektzuweisungstabelle aufzufüllen. Ich habe unten ein Bild eingefügt, um zu veranschaulichen, was ich erreichen möchte.
Ein Projekt kann bis zu 6 Projektzuordnungen haben. Jede Projektzuweisung hat eine Autoinkrement-ID (Zuweisungs-ID), aber ich kann diese ID nicht in Unterauswahlen verwenden, da sie nicht in einem Bereich von 1-6 liegt, sodass ich unterscheiden kann, wer der erste PA2 ist und wer PA3.
Beispiel:
(SELECT pa1.name FROM table where project.projectid = project_allocations.projectid and JVID = '1') as [PA1 Name],
(SELECT pa2.name FROM table where project.projectid = project_allocations.projectid and JVID = '1') as [PA2 Name],
Die modifizierte Projects Tabelle hat Spalten für PA1, PA2, PA3. Ich muss diese Spalten basierend auf der Tabelle für die Projektzuweisung auffüllen. Daher wird der erste Datensatz in der Datenbank für jedes Projekt PA1 sein.
Ich habe einen SQL-Agent-Job zusammengestellt, der diese Tabelle mit den hinzugefügten Spalten löscht und neu erstellt, so dass es mehr darum geht, die Zeilen der Projektrealisierung in die Tabelle der geänderten Projekte by row_num zu schreiben.
Irgendwelche Ratschläge?
--update
Was ich jetzt tun muß, ist der row_number als eine Spalte für jedes Projekt in der Reihenfolge der DESC hinzugefügt zu bekommen.
Also die erste Zeile für jede Projekt-ID wird 1 sein und für jede Zeile danach 2,3,4,5,6.
Ich habe den folgenden Code auf dieser Website zu finden:
use db_name
with cte as
(
select *
, new_row_id=ROW_NUMBER() OVER (ORDER BY eraprojectid desc)
from era_project_allocations_m
where era_project_allocations_m.eraprojectid = era_project_allocations_m.eraprojectid
)
update cte
set row_id = new_row_id
update cte
set row_id = new_row_id
Ich habe als eine Spalte in dem vorherigen SQL Agenten Schritt und diesen Code hinzugefügt row_id und es läuft, aber es produziert mir nicht row_number für jede projectid.
Wie Sie aus dem obigen Bild sehen können; Ich brauche 1-2 FOR je Projekt ID - effektiv gibt mir Tausende von 1s, 2s, 3s, 4s.
So kann ich sie in Spalten sortieren können :)
Besser als ein Bild, um einige Beispieldaten und die erwarteten Ausgang zu liefern war. Und bitte etikettieren Sie Ihre Frage mit der entsprechenden Version Ihres SQL-Servers. – Shnugo
Hier ist ein großartiger Ort, um zu beginnen. http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ Und FWIW Ich bezweifle, dass Sie eine Schleife benötigen, um Daten einzufügen. –
@SeanLange Ich bin mir nicht sicher, die Tabelle wird nicht selbst aktualisiert; Es wird verwendet, um DB-Ansichten für ein Front-End zu erstellen, so dass ein SQL-Job nachts ausgeführt wird, um die Daten auf den neuesten Stand zu bringen. – Justin