sql >> Database >  >> RDS >> Sqlserver

Hoe maak je een weergave met 14000 kolommen erin?

Ernstig? 14.000 kolommen in een weergave? Je hebt hier een serieus ontwerpprobleem. Als u het echter wilt proberen, probeer dan deze dynamische spilquery. Het werkt met de beperkte gegevens die je hebt verstrekt:

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)

Bewerkte veldnamen volgens bijgewerkte vraag.




  1. applicatie implementeren met OraOLEDB-provider

  2. Hoe Oracle-schemagrootte weer te geven met SQL-query?

  3. MySQL haalt laatste datumrecords van meerdere

  4. Python Postgres De beste manier om gegevens van een tabel op de ene DB in een andere tabel op een andere DB in te voegen