Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

jak wygenerować zapytanie w SQL SERVER 2005, które daje wyjście takie jak Matrix?

Coś takiego przy użyciu CTE i row_number() :

demonstracja skrzypiec

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

wyniki:

| 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. Jak przekonwertować ciąg na datę/godzinę w SQL Server za pomocą PARSE()

  2. Jak utworzyć plik wyjściowy csv z procedury składowanej w SQL Server

  3. Jak zapisać wideo w bazie danych za pomocą c#?

  4. Zmień kolumnę, dodaj domyślne ograniczenie

  5. Efektywnie konwertuj wiersze na kolumny w serwerze sql