回答

收藏

如何避免在同一选择中多次重复计算的表达式?

技术问答 技术问答 196 人阅读 | 0 人回复 | 2023-09-14

如何在同一选择中多次使用计算列而不重复表达式,也不使用公共表达式或复杂的子选择?. L* t+ [  P7 X( Z7 r; w1 q
DECLARE @T TABLE ( NUM1 INT,NUM2 INT)INSERT INTO @T VALUES (2,3);INSERT INTO @T VALUES (5,7);INSERT INTO @T VALUES(32,3);INSERT INTO @T VALUES(6,8);SELECT (NUM1 NUM2) [ADD],[ADD]*2,[ADD]/2,* FROM @T在SQL Server 2005年解决这个问题的方法有哪些?
' K$ ~4 _, @) Q3 v7 X                                                                  l- d/ i2 O3 C- j" z' B
    解决方案:                                                                . U4 k' b3 g  {# M# K: z9 v9 z
                                                                您可以使用交叉申请! F  C% }, N" Q- @( U
SELECT T2.[ADD],      T2.[ADD]*二、       T2.[ADD]/2FROM @T AS T1  CROSS APPLY (SELECT T1.NUM1 T1.NUM2) AS T2([ADD])或CTE
6 ~5 l7 {/ ^0 iWITH C AS(  SELECT NUM1 NUM2 AS [ADD]  FROM @T)SELECT [ADD],      [ADD]*二、       [ADD]/2FROM C或子查询(也称派生表)
, l( d  O9 d* ^& ESELECT T.[ADD],      T.[ADD]*二、       T.[ADD]/2FROM (        SELECT NUM1 NUM2 AS [ADD]       FROM @T     ) AS T列别名不能用于声明的同一字段列表。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则