我可以在SQL Server中使用View中的Alias并在其中处理吗?
例如,我有:
select dbo.DateToShamsi(dbo.Health_Komak2.CDate) as HK2Hijri .....
我可以使用:
select dbo.DateToShamsi(dbo.Health_Komak2.CDate) as HK2Hijri , SUBSTRING(----->HK2Hijri, 1, 4)
如果不能我怎么做?
答案 0 :(得分:4)
我可以在SQL Server中使用View中的Alias并在其中处理吗?
不,解释All-at-Once Operations in T-SQL
无效的列名称“Corrected FirstName”。
此错误消息表示我们无法在SELECT子句中的下一列表达式中使用别名。 在查询中我们创建了一个更正的名字,我们希望在下一列中使用它来生成全名,但是All-at-Once操作概念告诉我们你不能这样做,因为同一个逻辑查询中的所有表达式处理阶段(此处为SELECT)在逻辑上同时进行评估。
您可以使用OUTER APPLY
:
SELECT s.HK2Hijri, LEFT(s.HK2Hijri, 4)
FROM dbo.Health_Komak2 k
OUTER APPLY (SELECT dbo.DateToShamsi(k.CDate) AS HK2Hijri) s
答案 1 :(得分:4)
不,但您可以使用子查询,CTE或横向连接来执行此操作。让我展示后者,这是最有趣的选择:
select v.HK2Hijri, substr(v.HK2Hijri, . . .
from dbo.Health_Komak2 hk outer apply
(values (dbo.DateToShamsi(hk.CDate))
) v(HK2Hijri);
应用非常方便,因为您可以定义多个别名。您还可以多次使用apply
对先前定义的别名执行操作。