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

Problem w dynamicznym przechylaniu + serwer sql 2005

Możesz zbudować zapytanie dynamicznie:

declare @installment_list varchar(max)
select @installment_list = IsNull(@installment_list,'') + 
    '[' + cast(Installment as varchar(32)) + '],'
from #tbl
group by Installment

-- Remove last comma
set @installment_list = left(@installment_list,len(@installment_list)-1)

declare @dynquery varchar(max)
set @dynquery = 'select * ' +
    'from #tbl ' +
    'pivot ( ' +
    '   max([Installment]) ' +
    '   for [Installment] ' +
    '   in (' + @installment_list + ') ' +
    ') as pvt'

exec (@dynquery)

Zauważ, że zmienne tabeli nie są widoczne wewnątrz funkcji exec(), więc zmieniłem na zmienną tymczasową (#tbl zamiast @tbl).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zdobądź wszystkie zagnieżdżone dzieci dla identyfikatora rodzica

  2. SQL Server 2008 Generowanie serii dat i godzin

  3. Jak SHOWPLAN_XML działa w SQL Server

  4. Jak zwrócić listę zdarzeń wyzwalających w SQL Server

  5. Wewnętrzne łączenie trzech stołów