Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将一些SQL列转换为行_Sql_Oracle - Fatal编程技术网

将一些SQL列转换为行

将一些SQL列转换为行,sql,oracle,Sql,Oracle,我需要把论文的顺序改成 ID YEAR FORCE NEIGHBOURHOOD ALL_CRIME ANTI_SOCIAL_BEHAVIOUR BURGLARY CRIMINAL_DAMAGE_AND_ARSON DRUGS OTHER_THEFT PUBLIC_DISORDER_AND_WEAPONS ROBBERY SHOPLIFTING VEHICLE_CRIME VIOLENT_CRIME OTHER_CRIME 1 2013-03 Po

我需要把论文的顺序改成

ID  YEAR    FORCE   NEIGHBOURHOOD   ALL_CRIME   ANTI_SOCIAL_BEHAVIOUR   BURGLARY    CRIMINAL_DAMAGE_AND_ARSON   DRUGS   OTHER_THEFT PUBLIC_DISORDER_AND_WEAPONS ROBBERY SHOPLIFTING VEHICLE_CRIME   VIOLENT_CRIME   OTHER_CRIME
1   2013-03 Police  AAN_HP  290 91  27  33  11  64  8   6   3   14  27  6

如果要更改列返回的顺序,请更改选择列的顺序

从t中选择1,2,3

将以不同的方式返回

从t中选择2,1,3


我不知道这是否是你想要的,但我发现这个问题措辞混乱

查询非常容易:

ID  1
YEAR    2012
FORCE   Police
NEIGHBOURHOOD   Bradford
ALL_CRIME   12345
ANTI_SOCIAL 87
BURGLARY    10
CRIMINAL_DAMAGE 20
DRUGS   15
OTHER_THEFT 30
提示materialize不会使Oracle表现不佳。如果您不指定此提示,他喜欢首先在此处连接表,然后运行层次结构

试试这个

with lvls as (select /* + materialize */ level lv from dual connect by level <= 9)
select id,
       decode(lv,
              1,'year',
              2,'force'),
              ...
       decode(lv,
              1,to_char(year),
              2,to_char(force),
              ...
from yourtable, lvls
order by id,lv;
注意:col1中提到的所有列必须是相同的数据类型


行或列只是用于查询的工具的选择,而数据库开发工作常用的工具通常使用gridlike record=row格式,如果您需要基于行的报告,您可能希望查看大量报告工具中的一种,甚至可以使用MS Access从Oracle数据库生成报告。您使用的Oracle版本是什么?从Oracle11g开始,您可以简单地取消激活所需的输出。
 select * from your_tab unpivot(col2 for col1 in(ID,YEAR,FORCE,NEIGHBOURHOOD, ALL_CRIME,ANTI_SOCIAL_BEHAVIOUR);