select k.Val, sum(k.Cnt) "Cnt" from
(
(select a.Env_Location "Val", count( a.VolumeID ) "Cnt"
from DTree
join ZCOP_APLNG_Documents a on
DTree.DataID = a.DataID and DTree.VersionNum = a.VersionNum
where
DTree.OwnerID = -2111 and
DTree.SubType not in ( 0, 136 ) and
a.Env_Location is not NULL
group by a.Env_Location
)
union
(select
b.Env_Location "Val", count( b.VolumeID ) "Cnt"
from DTree
join ZCOP_APLNG_Corr b on
DTree.DataID = b.DataID and DTree.VersionNum = b.VersionNum
where
DTree.OwnerID = -2111 and
DTree.SubType not in ( 0, 136 ) and
b.Env_Location is not NULL
group by b.Env_Location
)
) k
group by k.Val
任何人都可以帮助我完成这项工作。显示错误Val或Cnt是无效的标识符。我们不能为列使用某些列别名吗?
答案 0 :(得分:1)
如果您想使用case-sensitive identifiers(几乎总是一个坏主意),对该标识符的每个引用都需要区分大小写。在您的情况下,"Val"
和"Cnt"
都是区分大小写的标识符,因此您每次都需要使用区分大小写的语法来引用它们。像
SELECT k."Val", sum(k."Cnt") "Cnt" from
...
GROUP BY k."Val"
在绝大多数情况下,您确实不想使用区分大小写的别名。
通常可以提供更好的服务SELECT k.val, sum(k.cnt) cnt from
(
SELECT a.env_location val, count( a.volumeID ) cnt
...
UNION
SELECT b.env_location val, count( b.volumeID) cnt
...
) k
GROUP BY k.val