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

làm thế nào để tạo một truy vấn trong SQL SERVER 2005 cho kết quả như Ma trận?

Một cái gì đó như thế này bằng cách sử dụng CTErow_number() :

Bản trình diễn Fiddle

declare @numRows int = 8

;with cte as (
  select columnA X, row_number() over (order by columnA) rn
  from Table1
)
select c1.x A, c2.x B, c3.x C, c4.x D
from cte c1 
     left join cte c2 on c1.rn = [email protected]  
     left join cte c3 on c1.rn = c3.rn-(@numRows * 2)
     left join cte c4 on c1.rn = c4.rn-(@numRows * 3)
where c1.rn <= @numRows

kết quả:

| A |  B |  C |  D |
|---|----|----|----|
| 1 |  9 | 17 | 25 |
| 2 | 10 | 18 | 26 |
| 3 | 11 | 19 | 27 |
| 4 | 12 | 20 | 28 |
| 5 | 13 | 21 | 29 |
| 6 | 14 | 22 | 30 |
| 7 | 15 | 23 | 31 |
| 8 | 16 | 24 | 32 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. UNION kết quả của nhiều thủ tục được lưu trữ

  2. máy chủ sql Chèn csv hàng loạt với dữ liệu có dấu phẩy

  3. Tham gia bên trong SQL dựa trên giá trị rỗng

  4. Làm thế nào để tăng hiệu suất của Cơ sở dữ liệu?

  5. xóa bản ghi khỏi nhiều bảng cùng một lúc bằng một truy vấn duy nhất trong sqlserver2005