Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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_Group By_Casting - Fatal编程技术网

Sql 是否按“选择”部分中的“强制转换”字段分组?

Sql 是否按“选择”部分中的“强制转换”字段分组?,sql,oracle,group-by,casting,Sql,Oracle,Group By,Casting,在我的主选择部分中有一个字段,我想在报告中按该字段分组 CAST((SELECT attribute_value.attrib_value_name FROM attribute_value, attribute_type WHERE attribute_type.attrib_type_code = 'SC17' AND attribute_type.attrib_type_code = attribute_value.attrib_type_code AND attribute_va

在我的主选择部分中有一个字段,我想在报告中按该字段分组

CAST((SELECT attribute_value.attrib_value_name 
FROM attribute_value,
attribute_type 
WHERE attribute_type.attrib_type_code = 'SC17' 
AND attribute_type.attrib_type_code = attribute_value.attrib_type_code 
AND attribute_value.attrib_value_code = feat_attrib_type.attrib_value_code  ) as VARCHAR (30)) as ZONE_SPEC,
我曾尝试将相同的代码放在SQL的group部分,但它总是返回一条错误消息

“ORA-00933:SQL命令未正确结束”

到目前为止,我得到的代码是:

select

CAST((SELECT attribute_value.attrib_value_name 
FROM attribute_value,
attribute_type 
WHERE attribute_type.attrib_type_code = 'SC17' 
AND attribute_type.attrib_type_code = attribute_value.attrib_type_code 
AND attribute_value.attrib_value_code = feat_attrib_type.attrib_value_code  ) as VARCHAR (30)) as ZONE_SPEC,
feature_type.feature_type_name,

sum (feat_measurement.feature_quantity)


from
feature
inner join feature_type on feature.feature_type_code = feature_type.feature_type_code
inner join area on feature.area_code = area.area_code
inner join feat_measurement on feature.plot_number = feat_measurement.plot_number 
and feature.site_code = feat_measurement.site_code
inner join measurement_type on feat_measurement.measurement_code = measurement_type.measurement_code
inner join feat_attrib_type on feature.site_code = feat_attrib_type.site_code AND
feature.plot_number = feat_attrib_type.plot_number

where
measurement_type.measurement_code in ('AREA') and
feature.feature_deadflag = 'N'

group by 
CAST((SELECT attribute_value.attrib_value_name 
FROM attribute_value,
attribute_type 
WHERE attribute_type.attrib_type_code = 'SC17' 
AND attribute_type.attrib_type_code = attribute_value.attrib_type_code 
AND attribute_value.attrib_value_code = feat_attrib_type.attrib_value_code  ) as VARCHAR (30)) as ZONE_SPEC,

feature_type.feature_type_name

order by
feature_type.feature_type_name

是否可以将此强制转换字段添加到分组字段中?如果是这样的话,怎么做?

如果您试图在GROUPBY子句中投射表达式,我认为这是不允许的。但是,您可以通过使用分区来实现所需的结果。我已经编辑了一点代码

select
feature_type.feature_type_name,
sum (feat_measurement.feature_quantity) OVER (Partition by CAST((SELECT attribute_value.attrib_value_name 
FROM attribute_value,
attribute_type 
WHERE attribute_type.attrib_type_code = 'SC17' 
AND attribute_type.attrib_type_code = attribute_value.attrib_type_code 
AND attribute_value.attrib_value_code = feat_attrib_type.attrib_value_code  ) as VARCHAR (30)))as ZONE_SPEC

from
feature
inner join feature_type on feature.feature_type_code = feature_type.feature_type_code
inner join area on feature.area_code = area.area_code
inner join feat_measurement on feature.plot_number = feat_measurement.plot_number 
and feature.site_code = feat_measurement.site_code
inner join measurement_type on feat_measurement.measurement_code = measurement_type.measurement_code
inner join feat_attrib_type on feature.site_code = feat_attrib_type.site_code AND
feature.plot_number = feat_attrib_type.plot_number

where
measurement_type.measurement_code in ('AREA') and
feature.feature_deadflag = 'N'

group by 
feat_measurement.feature_quantity,
feat_attrib_type.attrib_value_code,
feature_type.feature_type_name

order by
feature_type.feature_type_name

希望这有帮助。

今天的提示:切换到现代的显式
JOIN
语法。更易于编写(无错误)、更易于读取和维护,并且在需要时更易于转换为外部联接。跳过GROUP BY的列别名尝试
作为ZONE_SPEC
。当我尝试按ZONE_SPEC分组时,feature_type.feature_type_name会收到错误消息ORA-00904:“ZONE_SPEC”:无效标识使用
联接
。我认为不能通过子查询进行聚合。