Si, è vero ... quel tipo di estrazione con utilizzo di variabili
che fai ti restituisce solamente l'ultimo record
indipendentemente dai JOIN o altro
Ma a rifletterci un po mi sembra giusto.
la tua variabile è una sola
Come potrebbe contenere tutti i record filtrati della tabella ???
Poi io sono ancora molto acerbo con TSQL
Purtroppo sono più maturo come età
USE tempdb;
GO
-- xxx Creo la tabella xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
CREATE TABLE #T1(
Id int NOT NULL,
Ca1 varchar(50) NULL,
Ca2 varchar(50) NULL,
)
GO
-- xxx Inserisco un po di dati xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
INSERT #T1 (Id, Ca1, Ca2)
VALUES
(20, N'ergrt', N'jbt'),
(14, N'zzz Ultimo Nell Ordinamento', N'rttye'),
(17, N'aaa Primo Nell Ordinamento', NULL),
(6, N'yerhy', N'derk'),
(10, N'tyty', NULL)
GO
-- xxx Estraggo SOLO l'ultimo record xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DECLARE @C1 as Varchar(50)
Select
@C1 = Ca1
FROM #T1 ORDER BY Ca1
/* A questo punto la variabile @C1 è solamente una di numero ......
come potrebbe contenere un valore per ogni record ????? */
SELECT @C1
-- xxx Estraggo tutti i record xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SELECT Id, Ca1, Ca2 FROM #T1 ORDER BY Ca1
-- xxx Ripulisco tempdb xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DROP TABLE #T1;
GO
-- Finito xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Facci sapere