Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como criar uma exibição com 14.000 colunas?


Seriamente? 14.000 colunas em uma visualização? Você tem um sério problema de design aqui. No entanto, se você quiser tentar, tente esta consulta dinâmica dinâmica. Funciona com os dados limitados que você forneceu:
DECLARE @ColumnList VARCHAR (MAX)
DECLARE @SQL VARCHAR(MAX)


-- Create a list of distinct Item IDs which will become column headers
SELECT @ColumnList = COALESCE(@ColumnList + ', ','') + 'ItemID' + CAST(I.ItemID AS VARCHAR(12)) FROM (SELECT DISTINCT ItemID FROM Item) I


SET @SQL = '
SELECT
  ShopID, ' + @ColumnList + '
FROM
(  
  SELECT
    s.ShopID,
    ItemID = ''ItemID'' + Cast(i.ItemID as varchar(12)),
    sim.ItemCost
  FROM
      dbo.Shop_Item_Mapping AS sim
      JOIN dbo.Shop AS s ON sim.ShopID = s.ShopID
      JOIN dbo.Item AS i ON SIM.ItemID = i.ItemID
)  T
PIVOT
(
    MIN(ItemCost)
    FOR T.ItemID IN (' + @ColumnList + ')
) AS PVT'


exec (@SQL)

Nomes de campos editados de acordo com a pergunta atualizada.