sql >> Database >  >> RDS >> Sqlserver

hoe een query te genereren in SQL SERVER 2005 die output zoals Matrix geeft?

Zoiets als dit met CTE en row_number() :

Fiddle-demo

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

resultaten:

| 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. Verbeteren hoe u het aantal gelegenheden kunt krijgen voor elke afzonderlijke waarde van Group Concat Mysql

  2. SQL INSERT van SELECT

  3. PHP PDO kolommen selecteren met enkele aanhalingstekens in hun naam

  4. Stapsgewijze procedure om gegevens van Excel naar MySql-databasetabel te migreren