2017-08-06 3 views
0

Ich versuche, Tabelle1 aus Tabelle2 mit der ersten Zeile mit der folgenden SQL-Anweisung zu aktualisieren, aber keine Zeilen werden aktualisiert, auch wenn Übereinstimmungen vorhanden sind.Update Tabelle1 aus Tabelle2 mit Top1 Zeile

Table1:

partno avprice 
-------------- 
P001 0 
P002 0 
P003 0 
P004 0 
P005 0 

Table2:

id(PK) partno unitprice 
------------------------- 
1  P001  0.65 
2  P001  0.90 
3  P003  1.20 
4  P005  0.25 
5  P005  1.35 

SQL

update table1 
set avgprice = (select top 1 unitprice 
       from table2 
       left join table1 on table2.partno = table1.partno 
       order by tabl2.id) 

Antwort

1

ich ein Update dich hier verwenden würde, aber in diesem Fall können wir beitreten eine Unterabfrage, die den fi findet erster Stückpreis für jedes Teil, zuerst wie von der id Spalte in table2 bestellt.

UPDATE t1 
SET t1.avgprice = t2.unitprice 
FROM table1 t1 
INNER JOIN 
(
    SELECT partno, unitprice, 
     ROW_NUMBER() OVER (PARTITION BY partno ORDER BY id) rn 
    FROM table2 
) t2 
    ON t1.partno = t2.partno 
WHERE t2.rn = 1 
+0

Fehler: falsche Syntax in der Nähe von 't1'. erwartet SET. –

+0

Ich sehe kein Problem mit meiner Syntax. Sehen Sie, ob Sie meine Abfrage funktionieren lassen können. –

+0

Ich habe gerade die SQL in das Abfragefenster in SQL Server 2008 R2 kopiert. table1 und table2 existieren bereits in der db. Ich bekomme immer noch den oben genannten Fehler. –

Verwandte Themen