
Originariamente inviata da
mau79
...... Io vorrei poter avere una tabella così: ........
Tu vorresti una tabella, se ti basta "solamente" una Vista puoi fare una "UNION"
diversamente si complica un pochino .....
codice:
/* Uso Master */
USE [master]
GO
/* Creo un DB */
CREATE DATABASE [Test3]
GO
/* Uso il DB appena creato */
USE [Test3]
GO
/* Creo una tabella T1 molto semplice senza Key o altro */
CREATE TABLE [dbo].[T1]
(
[ID] [int] NULL,
[Pers1] [nvarchar](50) NULL,
[Pers2] [nvarchar](50) NULL,
[Pers3] [nvarchar](50) NULL,
[Pers4] [nvarchar](50) NULL
) ON [PRIMARY]
GO
/* Creo una Vista UNION */
CREATE VIEW [dbo].[Vista2]
AS
SELECT ID AS IdX, Pers1 AS PersX FROM dbo.T1 WHERE ((NOT (Pers1 IS NULL)) AND (NOT (LEN(Pers1) = 0)))
UNION ALL
SELECT ID AS IdX, Pers2 AS PersX FROM dbo.T1 WHERE ((NOT (Pers2 IS NULL)) AND (NOT (LEN(Pers2) = 0)))
UNION ALL
SELECT ID AS IdX, Pers3 AS PersX FROM dbo.T1 WHERE ((NOT (Pers3 IS NULL)) AND (NOT (LEN(Pers3) = 0)))
UNION ALL
SELECT ID AS IdX, Pers4 AS PersX FROM dbo.T1 WHERE ((NOT (Pers4 IS NULL)) AND (NOT (LEN(Pers4) = 0)))
;
GO
/* Inserisco i dati in tabella */
INSERT [dbo].[T1] ([ID], [Pers1], [Pers2], [Pers3], [Pers4]) VALUES (11, N'PP1', NULL, N'', N'PP3')
GO
INSERT [dbo].[T1] ([ID], [Pers1], [Pers2], [Pers3], [Pers4]) VALUES (11, N'', N'PP2', NULL, N'PP4')
GO
INSERT [dbo].[T1] ([ID], [Pers1], [Pers2], [Pers3], [Pers4]) VALUES (11, N'', NULL, N'', NULL)
GO
/* Finito */
/* Visualizziamo direttamente a schermo il risultato della vista */
SELECT ID AS IdX, Pers1 AS PersX FROM dbo.T1 WHERE ((NOT (Pers1 IS NULL)) AND (NOT (LEN(Pers1) = 0)))
UNION ALL
SELECT ID AS IdX, Pers2 AS PersX FROM dbo.T1 WHERE ((NOT (Pers2 IS NULL)) AND (NOT (LEN(Pers2) = 0)))
UNION ALL
SELECT ID AS IdX, Pers3 AS PersX FROM dbo.T1 WHERE ((NOT (Pers3 IS NULL)) AND (NOT (LEN(Pers3) = 0)))
UNION ALL
SELECT ID AS IdX, Pers4 AS PersX FROM dbo.T1 WHERE ((NOT (Pers4 IS NULL)) AND (NOT (LEN(Pers4) = 0)))
;
GO
/* (Ri) Finito */