sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kan jag undvika att upprepa ett beräknat uttryck flera gånger i samma urval?

Du kan använda cross application

SELECT T2.[ADD],
       T2.[ADD]*2,
       T2.[ADD]/2
FROM @T AS T1
  CROSS APPLY (SELECT T1.NUM1+T1.NUM2) AS T2([ADD])

eller en CTE

WITH C AS
(
  SELECT NUM1+NUM2 AS [ADD]
  FROM @T
)
SELECT [ADD],
       [ADD]*2,
       [ADD]/2
FROM C

eller en underfråga (även känd som en härledd tabell)

SELECT T.[ADD],
       T.[ADD]*2,
       T.[ADD]/2
FROM (
       SELECT NUM1+NUM2 AS [ADD]
       FROM @T
     ) AS T

Det är inte möjligt att använda kolumnaliaset i samma fältlista som det deklareras.



  1. Saker att veta om databasdrivna webbplatser

  2. SQL NOT Operator för nybörjare

  3. Hur ordnar mysql rader med samma värde?

  4. Skapa lagrade procedurer med hjälp av Entity Framework Code först?