sql >> Databasteknik >  >> RDS >> Sqlserver

Hur skapar man en vy med 14 000 kolumner?

Allvarligt? 14 000 kolumner i en vy? Du har ett allvarligt designproblem här. Men om du vill prova, prova den här dynamiska pivotfrågan. Det fungerar med den begränsade data du har tillhandahållit:

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)

Redigerade fältnamn enligt uppdaterad fråga.




  1. Express-fråga för SQL

  2. De bästa tillgängliga databasövervakningsalternativen för ditt företag

  3. Handledning för SQL-transaktioner

  4. log4net-loggningsfel i mysql-databasloggning