Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie erstelle ich eine Ansicht mit 14000 Spalten darin?

Ernsthaft? 14.000 Spalten in einer Ansicht? Sie haben hier ein ernsthaftes Designproblem. Wenn Sie es jedoch versuchen möchten, probieren Sie diese dynamische Pivot-Abfrage aus. Es funktioniert mit den begrenzten Daten, die Sie bereitgestellt haben:

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)

Bearbeitete Feldnamen gemäß aktualisierter Frage.