我有一個資料集,它來自查詢。解釋這個問題的最簡單方法是向您展示資料集的樣子。
假設我創建了這個表,并插入了資料。
Create table #tempTable2 (Locaiton1 decimal(10,2), Location2 Decimal(10,2), Location3 decimal(10,2), Location4 decimal(10,2),
Location5 Decimal(10,2))
Insert into #temptable2 Values ('22.4','33.4', '12.4', '95.94','23.40')
select *
from #tempTable2
當您選擇資料時,您的輸出是:
Location1 | Location2 | Location3 | Location4| Location5
22.4 | 33.4 | 12.4 | 95.94 | 23.40
我想做的是像這樣顯示資料:
Location | Amount
Location1 | 22.4
Location2 | 33.4
Location3 | 12.4
Location4 | 95.94
Location5 | 23.40
如何在 SQL Server 中完成此操作?
uj5u.com熱心網友回復:
修復 #tempTable2 定義中的錯字,使用CROSS APPLY可以防止您必須掃描表 N 次,每Location列一次:
SELECT y.Location, y.Amount
FROM #tempTable2 AS t2
CROSS APPLY (VALUES
('Location1', Location1),
('Location2', Location2),
('Location3', Location3),
('Location4', Location4),
('Location5', Location5)
) AS y (Location, Amount);
輸出:
| 地點 | 數量 |
|---|---|
| 位置1 | 22.40 |
| 位置2 | 33.40 |
| 位置3 | 12.40 |
| 位置4 | 95.94 |
| 位置5 | 23.40 |
- 示例db<>fiddle
uj5u.com熱心網友回復:
我不得不說你的表格的結構很糟糕,它應該像你想要的結果一樣從一開始就用兩列來構建。我也知道這個表很可能已經存在并且您無法控制架構。
要獲得您想要的結果,您可以使用 UNION:
SELECT 'Location1' as Location, Location1 as Amount FROM yourtable
UNION ALL
SELECT 'Location2' as Location, Location2 as Amount FROM yourtable
UNION ALL
SELECT 'Location3' as Location, Location3 as Amount FROM yourtable
UNION ALL
SELECT 'Location4' as Location, Location4 as Amount FROM yourtable
UNION ALL
SELECT 'Location5' as Location, Location5 as Amount FROM yourtable
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/460711.html
上一篇:查詢會話不再回應
下一篇:查詢Json陣列列和其他當前表列
