Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mengganti nilai nol dalam kueri sql pivot dinamis

Anda harus membuat daftar kolom lain untuk pernyataan pilih, dan membungkus setiap bulan dengan ISNULL, seperti:

DECLARE @cols AS NVARCHAR(MAX),
        @selectCols AS NVARCHAR(MAX),
        @query AS NVARCHAR(MAX) 

SELECT  @selectCols = STUFF
(
(
SELECT distinct ', ISNULL(' + QUOTENAME([MONTH]) + ', 0) AS ' + QUOTENAME([MONTH])
FROM   [HEADCOUNT]
WHERE  [MONTH] BETWEEN '01-012018' AND '12-01-2018'
ORDER BY ',' + QUOTENAME([MONTH])
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,''
)



SELECT  @cols = STUFF
(
(
SELECT distinct ',' + QUOTENAME([MONTH])
FROM   [HEADCOUNT]
WHERE  [MONTH] BETWEEN '01-012018' AND '12-01-2018'
ORDER BY ',' + QUOTENAME([MONTH])
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,''
)
SET     @query = 'SELECT [FTE/RATE CARD],' + @selectCols + ' FROM
(
SELECT  [MONTH],[FTE/RATE CARD],[HC]
FROM    [HEADCOUNT]
WHERE   [CC-LOC] IN ([CC-LOC]) 

) x pivot (Sum ([HC]) for [MONTH] in (' + @cols + '))p' execute(@query)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MVC4:UserIsInRole - Tidak dapat terhubung ke database SQL Server

  2. Apakah tipe data 'MONEY' SQL Server adalah titik mengambang desimal atau titik mengambang biner?

  3. 5 Sintaks SQL dan Prinsip Kueri untuk Pemantauan Basis Data yang Lebih Baik

  4. Buat skrip sisipan untuk rekaman yang dipilih?

  5. Dapatkan Beberapa Nilai di Kursor SQL Server