>alla fine dovrei ottenere
>
>nome data prezzo categoria
>bo3 13/10/03 10.50 bo a
>bo6 19/10/03 12.50 bo d
Ciao rew,
guarda il seguente esempio:
USE tempdb;
GO
/* Definisco le tabelle */
CREATE TABLE dbo.Tabella1(
id int NOT NULL IDENTITY PRIMARY KEY,
id_cod int NOT NULL,
nome char(3) NOT NULL,
data smalldatetime NOT NULL,
prezzo_id int NOT NULL
);
GO
CREATE TABLE dbo.Tabella2(
id_lista int NOT NULL IDENTITY PRIMARY KEY,
prezzo_id int NOT NULL,
categoria char(4) NOT NULL,
prezzo decimal(4,2) NOT NULL
);
GO
/* Le popolo */
INSERT dbo.Tabella1 VALUES(2, 'bo1', '20031010', 1);
INSERT dbo.Tabella1 VALUES(2, 'bo2', '20031012', 1);
INSERT dbo.Tabella1 VALUES(2, 'bo3', '20031013', 1);
INSERT dbo.Tabella1 VALUES(3, 'bo4', '20031018', 2);
INSERT dbo.Tabella1 VALUES(3, 'bo5', '20031016', 2);
INSERT dbo.Tabella1 VALUES(3, 'bo6', '20031019', 2);
INSERT dbo.Tabella2 VALUES(1, 'bo a', 10.50);
INSERT dbo.Tabella2 VALUES(3, 'bo s', 17.50);
INSERT dbo.Tabella2 VALUES(2, 'bo d', 12.50);
GO
/* Query */
SELECT
Q2.nome
, CONVERT(varchar, Q2.data, 103) AS data
, T2.prezzo
, T2.categoria
FROM dbo.Tabella2 AS T2
JOIN (
SELECT T1.Nome, Q1.*
FROM dbo.Tabella1 AS T1
JOIN (
SELECT id_cod, prezzo_id, MAX(data) AS data
FROM dbo.Tabella1
GROUP BY id_cod, prezzo_id
) AS Q1
ON T1.id_cod = Q1.id_cod
AND T1.prezzo_id = Q1.prezzo_id
AND T1.data = Q1.data
) AS Q2
ON T2.prezzo_id = Q2.prezzo_id
GO
/* Output:
nome data prezzo categoria
---- ----------- ------- ---------
bo3 13/10/2003 10.50 bo a
bo6 19/10/2003 12.50 bo d
(2 row(s) affected)
*/
/* Pulizia */
DROP TABLE dbo.Tabella1, dbo.Tabella2;
>PS GRAZIE
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org