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

Truy vấn thẻ chéo Sql Server 2008

Bạn có thể thực hiện việc này với toán tử 'pivot'. Một cái gì đó như thế này (mặc dù tôi chắc chắn rằng tôi đã hiểu một số chi tiết chính tả hoặc cú pháp ...):

select catTitle, [1] as site1, [2] as site2, [3] as site3, [4] as site4, [5] as site5
  from (select category.catTitle, equipment.quantity, site.title
          from equipment
            inner join site
              on (equipment.siteid = site.siteid)
            inner join category
              on (category.catid = equipment.catid)
        ) 
  pivot
  (
  sum (quantity)
    for equipment.siteid in ( [1], [2], [3], [4], [5] )
  ) as pvt
order by pvt.category;

Vấn đề với điều này là bạn cần biết chính xác tập hợp id trang web mà bạn muốn đưa vào truy vấn. Nếu bạn cần một bảng chéo động hơn (như bạn có thể lấy trong Excel), thì bạn cần tạo văn bản truy vấn dưới dạng một chuỗi và sử dụng sp_executesql để chạy nó. Trong văn bản đã tạo, bạn bao gồm nhiều "[1], [2], [3], [4], [5] ..." và "[1] dưới dạng site1, [2] dưới dạng site 2.. . "những thứ bạn cần.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sql Server 2008 R2 Management Studio - không có Intellisense

  2. Phiên bản cơ sở dữ liệu SQL Server

  3. Thực thi các câu lệnh chuẩn bị do NHibernate tạo trong SQL Server Management Studio

  4. Tại sao hàm tạo tên / giá trị SqlParameter lại coi 0 là null?

  5. LỆNH SQL có điều kiện BẰNG ASC / DESC cho các cột alpha