Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tiêu đề cột được tạo động trong truy vấn sql

Tôi đã thấy vấn đề xoay trục động này vào các thời điểm khác nhau. Và tôi đã có nó. Sau khi tìm kiếm rất nhiều, tôi đã đi đến một giải pháp phù hợp với tôi. nó không phải là thanh lịch nhưng nó đã cứu tôi. Những gì tôi làm trước tiên là chuẩn bị dữ liệu trong một bảng tạm thời, sau đó tôi tự động tạo chuỗi pivot (trong trường hợp của bạn là DD-MM) gán nó cho một biến. Và cuối cùng, tôi xây dựng một chuỗi sql để thực thi dưới dạng sql động .

Tôi đã sử dụng dữ liệu mẫu của bạn và nó có vẻ hoạt động. Hy vọng điều này sẽ giúp

select 
    userid,
         browsername, 
         CAST(day(logintime) as nvarchar(2)) + '-' + CAST(Month(logintime) AS nVARCHAR(2))  AS period  
INTO #TMP
from user_log_table order by 1

DECLARE @cols AS NVARCHAR(MAX), @query  AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' 
                    + QUOTENAME(convert(varchar(10), period, 120)) 
                from #TMP order by 1
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'')

set @query = 'SELECT userid, browsername,' + @cols + ' from 
         (
            select userid, browsername, period
            from #TMP
        ) x
        pivot 
        (
            count(period)
            for period in (' + @cols + ')
        ) p '
exec(@query)
drop table #TMP


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Điều gì xảy ra nếu bạn không thực hiện một giao dịch với cơ sở dữ liệu (chẳng hạn như SQL Server)?

  2. Cách lấy OBJECT_NAME () từ Cơ sở dữ liệu khác trong SQL Server

  3. Câu lệnh select lồng nhau trong SQL Server

  4. Thiết kế cơ sở dữ liệu:Tính Số dư Tài khoản

  5. Làm cách nào để tôi có thể lên lịch công việc để chạy truy vấn SQL hàng ngày?