我有一个满是交通事故数据的表,其中包含诸如'Vehicle_Manoeuvre‘之类的列标题,其中包含整数,例如,13表示导致事故的车辆操作是’超越正在行驶的车辆‘。
我知道从整数到文本的映射,因为我有一个包含这些数据的(相当大的) excel文件。
我想知道的一个例子是涉及这种操作的事故的百分比,但我不想每次编写查询时都必须打开excel文件并找到整数到文本的映射。
我可以手动更改所有列的整数(使用每列的所有可能映射编写查询,将它们添加为新列,然后删除原始列),但这可能需要很长时间。
是否可以创建某种类型的变量(例如,第一列是整数,第二列是映射文本的数组),SQL可以使用它来理解文本与整数的关系,从而使我可以编写以下查询:
SELECT COUNT(Vehicle_Manoeuvre) FROM traffictable WHERE Vehicle_Manoeuvre='overtaking moving vehicle';而不是:
SELECT COUNT(Vehicle_Manoeuvre) FROM traffictable WHERE Vehicle_Manoeuvre=13;即使表中的数据仍然是整数形式?
发布于 2016-08-14 23:46:26
您可以使用Maneeuvres引用表执行此操作:
create table Manoeuvres (
ManoeuvreId int primary key,
Name varchar(255) unique
);
insert into Manoeuvres(ManoeuvreId, Name)
values (13, 'Overtaking');如果您知道13有特殊的含义,那么您甚至可能已经有了这样一个表。
然后使用join
SELECT COUNT(*)
FROM traffictable tt JOIN
Manoeuvres m
ON tt.Vehicle_Manoeuvre = m.ManoeuvreId
WHERE m.name = 'Overtaking';https://stackoverflow.com/questions/38943829
复制相似问题