2016-06-15 17 views
0

Mein Problem ist ziemlich einfach, alle Abfragen, die wir versucht haben, Fehler aus. Ich bin ein Anfängerbenutzer und lerne noch die SQL-Sprache, jede Hilfe würde sehr geschätzt werden.Wie wird eine Zeile mit dem ersten Wert dieser Gruppe aktualisiert, wenn eine andere Spalte übereinstimmt?

Ich versuche, eine Tabelle zu aktualisieren, wo, wenn die Rate-Spalte Mat ID übereinstimmt mit dem ersten Wert aus dieser Gruppierung aktualisiert wird.

+------+--------+ 
| Rate | Mat ID | 
+------+--------+ 
| 1 | 81  | 
| 2 | 82  | 
| 2 | 83  | 
| 3 | 85  | 
| 2 | 86  | 
| 2 | 87  | 
| 3 | 88  | 
+------+--------+ 

Erwartetes Ergebnis:

+------+--------+ 
| Rate | Mat ID | 
+------+--------+ 
| 1 | 81  | 
| 2 | 82  | 
| 2 | 82  | 
| 3 | 85  | 
| 2 | 82  | 
| 2 | 82  | 
| 3 | 85  | 
+------+--------+ 
+0

Geben Sie Beispiele für die SQL, die Sie bereits versucht haben, und die Fehlermeldungen, die Sie erwähnt haben. –

Antwort

1

folgenden Unter der Annahme:

  • Ihre Definition von 'ersten' den Minimalwert pro Gruppierung.
  • Typo auf der letzten Zeile in Ihren erwarteten Ergebnissen sollte 85 sein und nicht 88.

Die folgende UPDATE Anweisung erfüllt Ihre Anforderungen:

; 
WITH CTE_MinMatID 
      AS (
       SELECT Rate, 
         MIN(MatID) MinMatID 
       FROM  @table 
       GROUP BY Rate 
      ) 
    UPDATE t 
    SET  t.MatID = cte.MinMatID 
    FROM @table AS t 
    INNER JOIN CTE_MinMatID cte ON cte.Rate = t.Rate; 

Working example here.

+0

Du bist gut, mein Freund, danke, dass du einem Neuling geholfen hast. Es hat genau das gemacht, was ich tun musste. Ich habe noch viel zu lernen. – DGriger

Verwandte Themen