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

Con trỏ SQL trong nội dung động

Tôi không chắc về tên cột. Vì vậy, trong ví dụ này, tôi mong đợi tbl_ProjectTransaction để có một cột được gọi là projectNametbl_TimeTypeGrouping để có GroupName . Giống như ai đó đã khen trong câu hỏi, bạn không nên sử dụng con trỏ trong trường hợp này. Bạn nên sử dụng một trục động. Đây là ví dụ:

Lấy tên của các nhóm như sau:

DECLARE @cols VARCHAR(MAX)
SELECT @cols=STUFF
(
    (
        SELECT 
            ',' +QUOTENAME(tbl_TimeTypeGrouping.sGroupName) -- ????
        FROM
            tbl_TimeTypeGrouping
        FOR XML PATH('')
    )
,1,1,'')

Điều này sẽ cung cấp cho bạn:

'[Group A],[Group B],[Group C],[Group N]'

Và sau đó thực hiện một trục động như thế này:

DECLARE @query NVARCHAR(4000)=
N'SELECT
    *
FROM
(
    SELECT
        tbl_ProjectTransaction.sProjectName, -- ????
        tbl_ProjectTransaction.decNumberOfHours,
        tbl_TimeTypeGrouping.sGroupName -- ???
    FROM
        tbl_ProjectTransaction
        JOIN tbl_TimeTypeGrouping
            ON tbl_ProjectTransaction.iRefTimeTypeID=tbl_TimeTypeGrouping.iRefTimeTypeID
) AS SourceTable
PIVOT
(
    SUM(decNumberOfHours)
    FOR GroupName IN ('[email protected]+')
) As Pvt'
EXECUTE(@query)

Tài liệu tham khảo:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mô phỏng CONNECT BY PRIOR của Oracle trong SQL Server

  2. Truy vấn SQL để tìm tên cột trong Cơ sở dữ liệu

  3. Làm thế nào để loại bỏ khoảng trắng đầu và cuối trong SQL Server - TRIM ()

  4. Gặp lỗi khi chạy tập lệnh 50 MB trên SQL Server 2008 R2

  5. Ưu và nhược điểm của việc giữ SQL trong Procs được lưu trữ so với Code là gì