Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak stworzyć widok z 14000 kolumnami?

Na serio? 14.000 kolumn w widoku? Masz tutaj poważny problem z projektem. Jeśli jednak chcesz spróbować, wypróbuj to dynamiczne zapytanie przestawne. Działa z ograniczonymi danymi, które podałeś:

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)

Edytowane nazwy pól zgodnie ze zaktualizowanym pytaniem.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sp_MSforeachdb:uwzględniaj tylko wyniki z baz danych z wynikami

  2. java.sql.SQLException:nie znaleziono odpowiedniego sterownika dla jdbc:microsoft:sqlserver

  3. Count(*) vs Count(Id) w serwerze sql 2005

  4. wystąpił błąd podczas nawiązywania połączenia z SQL Server

  5. Jak wybrać indeks klastrowy w SQL Server?