17 messaggi dal 22 agosto 2007
Salve a tutti/e. Ho un db in SQL2000, vorrei sapere se è possibile fare una query di update con una subquery nella where che seleziona due colonne. Ovvero una cosa di questo tipo:

Tabelle:
tab1, tab2

Colonne:
tab1 = a,b,c
tab2 = d,e,f,g,h

Query:
update tab1 set (a,b) = (select sum(d * e), sum(f * g) from tab2 where c = h group by h)

Una query di questo tipo è compatibile con SQL2000? Qual'è la sintassi corretta? Ho provato e riprovato ma mi da sempre errore...

Grazie,
Marco
salve Marco,
kingmob wrote:
Query:
update tab1 set (a, = (select sum(d * e), sum(f * g) from tab2 where c = h group by h)

Una query di questo tipo è compatibile con SQL2000? Qual'è la sintassi corretta? Ho provato e riprovato ma mi da sempre errore...

SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.tA (
a int,
b int,
c int
);
CREATE TABLE dbo.tB (
d int,
e int,
f int,
g int,
h int
);
GO
INSERT INTO dbo.tA VALUES ( 0, 0, 1 );
INSERT INTO dbo.tA VALUES ( 0, 0, 2 );

INSERT INTO dbo.tB VALUES ( 2, 2, 3, 3, 1 );
INSERT INTO dbo.tB VALUES ( 2, 2, 3, 3, 1 );
INSERT INTO dbo.tB VALUES ( 4, 4, 5, 5, 2 );
GO
UPDATE dbo.tA
SET a = (SELECT SUM(d * e) FROM dbo.tB WHERE h = c GROUP BY h), b = (SELECT SUM(f * g) FROM dbo.tB WHERE h = c GROUP BY h);
SELECT * FROM dbo.tA;
GO
DROP TABLE dbo.tA, dbo.tB;
--<----------
a b c
---------
---------
---------

8 18 1
16 25 2

saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org
http://www.hotelsole.com - http://www.hotelsolericcione.de

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
    In primo piano

    I più letti di oggi

    Media
    In evidenza
    MISC