Cad*_*oux 6 sql sql-server teradata ansi-sql
这是有效的ANSI SQL吗?:
SELECT 1 AS X
,2 * X AS Y
,3 * Y AS Z
Run Code Online (Sandbox Code Playgroud)
因为Teradata(12)可以做到这一点,以及这个(是的,疯了不是它):
SELECT 3 * Y AS Z
,2 * X AS Y
,1 AS X
Run Code Online (Sandbox Code Playgroud)
但是SQL Server 2005需要这样的东西:
SELECT X
,Y
,3 * Y AS Z
FROM (
SELECT X
,2 * X AS Y
FROM (
SELECT 1 AS X
) AS X
) AS Y
Run Code Online (Sandbox Code Playgroud)
不,它不是有效的ANSI.ANSI假定一次评估所有SELECT子句项.
我在SQL 2005中将它写成:
SELECT *
FROM (SELECT 1 AS X) X
CROSS APPLY (SELECT 2 * X AS Y) Y
CROSS APPLY (SELECT 3 * Y AS Z) Z
;
Run Code Online (Sandbox Code Playgroud)