得到这个错误 无效的列名“ ALIAS1”
我该怎么办?
export $PYTHONPATH=.
在评论中发布了查询... 谢谢!
答案 0 :(得分:1)
如果您使用的是 SQLServer ,那么问题不仅出在您的别名上,它还在减去日期类型的两列。还不能使用在同一选择中创建的别名。另外,如果您使用的是T.firstdate表达式,则应在表名后添加大写字母T。
在我的DEMO
如果您使用的是SQL Server,我相信这就是您所需要的:
SELECT T.firstdate
, T.lastdate
, datediff(day, T.firstdate , T.lastdate) as Alias1
, case when (datediff(day, T.firstdate , T.lastdate )) > 15
then 'a'
else 'b'
end as Alias2
FROM Table1 T;
以下是该正确示例的演示:DEMO。
如果您使用的是 ORACLE ,那么第一个查询就可以像此DEMO
SELECT T.firstdate
, T.lastdate
, (T.lastdate - T.firstdate) as ALIAS1
, case when (T.lastdate - T.firstdate) > 15 then 'a' else 'b' end as ALIAS2
FROM Table1 T;
因此,您看到,我们需要知道您使用的数据库。 :)
答案 1 :(得分:0)
内联别名不允许所有dbms
SELECT T.firsrdate, T.lastdate ,
T.lastdate - T.firsrdate as ALIAS1,
case when T.lastdate - T.firsrdate> 15 then 'a' else 'b' end as
ALIAS2 FROM Table1
答案 2 :(得分:0)
似乎您正在使用SQL server
,那么您可以使用apply
来避免重复相同的表达式:
select t.firstdate, t.lastdate, tt.alias1,
(case when alias1 > 15 then 'a' else 'b' end) as alias2
from table1 t cross apply
( values (t.lastdate - t.firstdate)
) tt(alias1);