[英]select rows as columns of the same table
我有一張像這樣的表:
id name date
---------------------
1 Ann 01/10/2015
2 Betty 01/31/2015
3 Charly 02/15/2015
4 David 03/30/2015
5 Ernest 04/04/2015
6 Frank 04/16/2015
7 Gale 05/02/2015
8 Jack 05/09/2015
9 Kelly 07/31/2015
我怎樣才能像這樣一次檢索 3 行:
1 Ann 01/10/2015 2 Betty 01/31/2015 3 Charly 02/15/2015
4 David 03/30/2015 5 Ernest 04/04/2015 6 Frank 04/16/2015
7 Gale 05/02/2015 8 Jack 05/09/2015 9 Kelly 07/31/2015
所以我有 3 行,以 Id 1、4 和 7 開頭
我使用 SQL Server 2012
您應該在 SQL 中執行此操作嗎? 不,我同意評論。
可以在SQL中完成嗎? 當然。
;with cte AS (SELECT *,(ROW_NUMBER() OVER(ORDER BY id)-1)/3 AS Rnk
FROM Table1)
,cte2 AS (SELECT *,ROW_NUMBER() OVER(PARTITION BY Rnk ORDER BY id) AS RN
FROM cte)
SELECT a.*,b.id AS id2, b.name AS name2, b.date AS date2
,c.id AS id3, c.name AS name3, c.date AS date3
FROM cte2 a
LEFT JOIN cte2 b
ON a.Rnk = b.Rnk
AND a.RN = b.RN - 1
LEFT JOIN cte2 c
ON a.Rnk = c.Rnk
AND a.RN = c.RN - 2
WHERE a.RN = 1
;
演示: SQL 小提琴
使用帶有ROW_NUMBER()
整數除法,您會得到一個重復 3 行的值,可用於將它們切片。
編輯: LEFT JOIN
以免排除不完整的行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.