我正在使用 Postgresql 并有這個表:
| 設備編號 | 日期 | 變數名稱 | 脈沖 |
|---|---|---|---|
| 1 | 2021-03-29 | 高度 | 10 |
| 1 | 2021-03-29 | 速度 | 20 |
| 1 | 2021-03-30 | 高度 | 30 |
| 1 | 2021-03-30 | 溫度 | 40 |
| 2 | 2021-03-29 | 高度 | 50 |
| 2 | 2021-03-29 | 加速度 | 60 |
| 2 | 2021-03-29 | 距離 | 70 |
并想查詢所以我按設備 ID 和日期分組,并按變數名創建列,所以預期的表是:
| 設備編號 | 日期 | 高度 | 速度 | 溫度 | 加速度 | 距離 |
|---|---|---|---|---|---|---|
| 1 | 2021-03-29 | 10 | 20 | 0 | 0 | 0 |
| 1 | 2021-03-30 | 30 | 0 | 40 | 0 | 0 |
| 2 | 2021-03-29 | 50 | 0 | 0 | 60 | 70 |
知道如何做到這一點嗎?
uj5u.com熱心網友回復:
除了交叉表,還有一種更直接的方式通過caseoperator
Select device_id, date,
Sum(Case When variable_name='height' Then pulses Else 0 End) As height,
Sum(Case When variable_name='speed' Then pulses Else 0 End) As speed,
Sum(Case When variable_name='temperature' Then pulses Else 0 End) As temperature,
Sum(Case When variable_name='acceleration' Then pulses Else 0 End) As acceleration,
Sum(Case When variable_name='distance' Then pulses Else 0 End) As distance
From Tbl
Group by device_id, date
Order by device_id, date
資料輸出:
device_id| date | height | speed | temperature | acceleration | distance
_________|______________________|________|_______|_____________|______________|_________
1| 2021-03-29 00:00:00 | 10| 20| 0| 0| 0
1| 2021-03-30 00:00:00 | 30| 0| 40| 0| 0
2| 2021-03-29 00:00:00 | 50| 0| 0| 60| 70
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/383296.html
下一篇:Rspec不顯示郵件正文中的內容
