Esquema de exemplo:
CREATE TABLE [dbo].[Base](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Option1ID] [int] NULL,
[Option2ID] [int] NULL,
[Option3ID] [int] NULL,
[Option1Name] [varchar] NULL,
[Option2Name] [varchar] NULL,
[Option3Name] [varchar] NULL,
[Option1LName] [varchar] NULL,
[Option2LName] [varchar] NULL,
[Option3LName] [varchar] NULL,)
Existe uma maneira de obter resultados que aparecem como:
ID | OptionID | OptionName | OptionLName
Tentei fazer isso usando UNION ALL, mas isso significa passar pela mesma linha 3 vezes no meu exemplo; no meu problema real, tenho que fazer isso 10 vezes. Não consigo normalizar a tabela devido ao código legado. Existe uma maneira de passar pela linha Base apenas uma vez?
sql-server
sql-server-2012
JustinDoesWork
fonte
fonte