gpt4 book ai didi

sql - 在查询中提前(或重新排序)重用派生列 - 这是有效的 ANSI SQL 吗?

转载 作者:行者123 更新时间:2023-12-02 19:16:28 26 4
gpt4 key购买 nike

这是有效的 ANSI SQL 吗?:

SELECT 1 AS X
,2 * X AS Y
,3 * Y AS Z

因为 Teradata (12) 可以做到这一点,以及这个(是的,不是很疯狂):

SELECT 3 * Y AS Z
,2 * X AS Y
,1 AS X

但是 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

最佳答案

不,它不是有效的 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
;

关于sql - 在查询中提前(或重新排序)重用派生列 - 这是有效的 ANSI SQL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2458700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com