Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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_Plsql - Fatal编程技术网

Sql 如何将行值显示为列?

Sql 如何将行值显示为列?,sql,oracle,plsql,Sql,Oracle,Plsql,我有这张桌子: FIELD_CODE PY_DATIME PARAM_NAME PARAM_VAL F262/034 29-JAN-2021 IRRIGATION_AMOUNT 0 F262/034 29-JAN-2021 MAX_TS_20 250 F262/034 29-JAN-2021 MAX_TS_40 168 F262/034 29-JAN-2021 ET 1.616806 F262/034 30-JAN-2021 MDS 25

我有这张桌子:

FIELD_CODE  PY_DATIME   PARAM_NAME  PARAM_VAL


F262/034    29-JAN-2021 IRRIGATION_AMOUNT   0
F262/034    29-JAN-2021 MAX_TS_20   250
F262/034    29-JAN-2021 MAX_TS_40   168
F262/034    29-JAN-2021 ET  1.616806
F262/034    30-JAN-2021 MDS 25
F262/034    30-JAN-2021 GROWTH  -8.333333
F262/034    30-JAN-2021 PLANT_STATUS    90
F262/034    30-JAN-2021 IRRIGATION_AMOUNT   0
F262/034    30-JAN-2021 MAX_TS_20   81
F262/034    30-JAN-2021 MAX_TS_40   83
F262/034    30-JAN-2021 ET  1.1099839
F262/034    31-JAN-2021 MDS 56.666668
F262/034    31-JAN-2021 GROWTH  18.333334
F262/034    31-JAN-2021 PLANT_STATUS    70
F262/034    31-JAN-2021 IRRIGATION_AMOUNT   0
F262/034    31-JAN-2021 MAX_TS_20   114
F262/034    31-JAN-2021 MAX_TS_40   95
F262/034    31-JAN-2021 ET  2.2792487
我想这样显示数据:

FIELD_CODE PY_DATIME MDS GROWTH  PLANT_STATUS    IRRIGATION_AMOUNT   MAX_TS_20   MAX_TS_40 ET

我需要从PARAM_NAME列中获取值,并使它们成为列。 并将参数值作为值。 但仅显示一次PY_DATIME和字段代码

表的主键是(字段代码、PY数据时间、参数名称)


谢谢。

您可以为此使用条件聚合——假设您事先知道所需的列:

select field_code, py_datetime,
       max(case when param_name = 'MDS' then param_val end) as mds,
       max(case when param_name = 'GROWTH' then param_val end) as GROWTH,
       max(case when param_name = 'PLANT_STATUS' then param_val end) as PLANT_STATUS,
       max(case when param_name = 'IRRIGATION_AMOUNT' then param_val end) as IRRIGATION_AMOUNT,
       max(case when param_name = 'MAX_TS_20' then param_val end) as MAX_TS_20,
       max(case when param_name = 'MAX_TS_40' then param_val end) as MAX_TS_40,
       max(case when param_name = 'ET' then param_val end) as ET
from t
group by field_code, py_datetime;

您可以为此使用条件聚合——假设您事先知道所需的列:

select field_code, py_datetime,
       max(case when param_name = 'MDS' then param_val end) as mds,
       max(case when param_name = 'GROWTH' then param_val end) as GROWTH,
       max(case when param_name = 'PLANT_STATUS' then param_val end) as PLANT_STATUS,
       max(case when param_name = 'IRRIGATION_AMOUNT' then param_val end) as IRRIGATION_AMOUNT,
       max(case when param_name = 'MAX_TS_20' then param_val end) as MAX_TS_20,
       max(case when param_name = 'MAX_TS_40' then param_val end) as MAX_TS_40,
       max(case when param_name = 'ET' then param_val end) as ET
from t
group by field_code, py_datetime;

检查
PIVOT
子句,它应该允许您实现您想要的。检查
PIVOT
子句,它应该允许您实现您想要的。