我有以下順序的車輛路徑表
| 車輛_ID | 車輛路徑 |
|---|---|
| 1 | 101 |
| 1 | 55 |
| 1 | 136 |
| 2 | 50 |
| 2 | 65 |
| 2 | 75 |
| 3 | 101 |
| 3 | 105 |
| 3 | 110 |
| 3 | 125 |
我想要如下格式的結果。
| 車輛_ID | 路徑1 | 路徑2 | 路徑3 | 路徑4 |
|---|---|---|---|---|
| 1 | 101 | 55 | 136 | |
| 2 | 50 | 65 | 75 | |
| 3 | 101 | 105 | 110 | 125 |
我嘗試了樞軸方法,但無法獲得上述結果。
uj5u.com熱心網友回復:
請注意,沒有第三列維護路徑值的實際相對順序。假設這個順序無關緊要,我們可以在以下幫助下進行透視ROW_NUMBER:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY Vehicle_ID
ORDER BY Vehicle_ID) rn
FROM yourTable
)
SELECT
Vehicle_ID,
MAX(CASE WHEN rn = 1 THEN [Vehicle Path] END) AS Path1,
MAX(CASE WHEN rn = 2 THEN [Vehicle Path] END) AS Path2,
MAX(CASE WHEN rn = 3 THEN [Vehicle Path] END) AS Path3,
MAX(CASE WHEN rn = 4 THEN [Vehicle Path] END) AS Path4
FROM cte
GROUP BY
Vehicle_ID
ORDER BY
Vehicle_ID;
uj5u.com熱心網友回復:
另一種方式,假設 SQL Server 2017 或更好(并且您不關心任何給定的第 5 行和以后的行Vehicle_ID):
;WITH cte AS
(
SELECT Vehicle_ID,
y = '["' STRING_AGG(Vehicle_Path, '","') '"]'
FROM dbo.VehicleInfo
GROUP BY Vehicle_ID
)
SELECT Vehicle_ID,
Path1 = JSON_VALUE(cte.y, '$[0]'),
Path2 = JSON_VALUE(cte.y, '$[1]'),
Path3 = JSON_VALUE(cte.y, '$[2]'),
Path4 = JSON_VALUE(cte.y, '$[3]')
FROM cte;
- 示例資料庫<>小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/380330.html
標籤:sql sql-server 查询语句 看法
