我有一张这种格式的桌子。
=> SELECT bitstring_to_int('11') as temp
temp
---
3
我的目标是创建一个类似于以下给出的表。
+----------+-------+---------+--------+--------+
| TicketId | PubId | PubName | Model1 | Model2 |
+----------+-------+---------+--------+--------+
| 1234 | 12 | abc | xyz1 | pqr1 |
| 1235 | 34 | iuy | fgy6 | piu8 |
+----------+-------+---------+--------+--------+
我知道我可以做+----------+---------+-------+
| TicketId | Display | Value |
+----------+---------+-------+
| 1234 | PubId | 12 |
| 1234 | PubName | abc |
| 1234 | Model1 | xyz1 |
| 1234 | Model2 | pqr1 |
| 1235 | PubId | 34 |
| 1235 | PubName | iuy |
| 1235 | Model1 | fgy61 |
| 1235 | Model2 | piu8 |
+----------+---------+-------+
,但由于复杂性,我不愿意这样做。
有人可以帮我吗?
答案 0 :(得分:1)
您可以:
select t.TicketId, tt.Display, tt.Value
from table t cross apply
( values ('PubId', PubId), ('PubName', PubName), ('Model1', Model1), ('Model2', Model2)
) tt(Display, Value)
order by t.TicketId;