SQL选择列名作为值

the*_*rrs 6 sql views

我有一个包含列名的数据表:

period, Truck, Car, Boat
Run Code Online (Sandbox Code Playgroud)

如果列包含数值,并且句点列是具有1到48的标识列,则有48行.

我想将这个表按到一个格式,我有一个名称列和一个值列以及句号列,例如.

period, NameOfVehicle, Value
Run Code Online (Sandbox Code Playgroud)

我想创建一个orignal表的视图来做到这一点?如何选择列名并将它们和该列中的正确值放入NameOfVehicle和Value列?

cle*_*tus 10

如果您有固定列,则可以始终执行此操作:

SELECT period, 'Truck' AS NameOfVehicle, Truck AS Value FROM vehicle
UNION ALL
SELECT period, 'Car', Car FROM vehicle
UNION ALL
SELECT period, 'Boat', Boat FROM vehicle
Run Code Online (Sandbox Code Playgroud)

如果列是动态的或未知的,那么它将更加困难,并将依赖特定于供应商的功能来查询模式和动态SQL语句.