2017-11-26 3 views
0

Ich muss eine neue Zeile mit Werten für jeden eindeutigen ResourceId in Tabelle hinzufügen. Ich kann diese leicht erhalten, indem ich Abfrage verwende:SQL Server - Zeile für jeden distict Spaltenwert hinzufügen

SELECT Distinct ResourceId FROM [dbo].[Localizations] 

Jetzt für jede von diesen muss ich eine Reihe der Tabelle hinzufügen. Reihen sind im Format

Id  ResourceId    Resourceset Value    LocaleId 
53591 AssessmentType_21  /Assessemnts Task Format  en 
53247 Attr_Description_1  /Description Concentration  en 
53378 Attr_Description_132 /Description Affirmation  en 

Es kann für jeden ResourceId mehr LocaleId s sein, aber ich mag immer nur eine Zeile pro ResourceId einzufügen.

die neuen Zeilen i einfügen müssen das Format haben:

  • ResourceId & Resourceset bleiben gleich

  • Wert immer Resourceset sein wird. ResourceId

  • LocaleId immer mk

So für das obige Beispiel sein Ich brauche eine Abfrage zu schreiben, die die folgenden drei Zeilen in die Tabelle einfügen würde. (Ids nur zum Beispiel)

Id  ResourceId    Resourceset  Value        LocaleId 
60001 AssessmentType_21  /Assessemnts /Assessemnts.AssessmentType_21  mk 
60002 Attr_Description_1  /Description /Description.Attr_Description_1  mk 
60003 Attr_Description_132 /Description /Description.Attr_Description_132  mk 

Hoffe, das ist klar - nicht die einfachste zu erklären. Habe in Fragen aber nichts ähnliches gesucht. Jede Hilfe auf diesem geschätzt.

Antwort

1

Wenn ich underststand richtig:

insert into localizations (ResourceId, Resourceset, Value, LocaleId) 
    select distinct ResourceId, Resourceset, 
      '/' + Resourceset + '.' + ResourceId, 'mk' 
    from localizations; 

Dies setzt voraus, dass das Paar ResourceId/Resourceset einzigartig ist.

Dies setzt auch voraus, dass die id automatisch zugewiesen wird (d. H. Es ist eine identity Spalte).

Verwandte Themen