Har ett litet problem med en SELECT sats i MSSQL 2008 Express Det går väl att slänga på en extra fråga bara? Nej du kan inte göra så, alias är bara "synliga" i ORDER BY precis som du skrev. Det beror nog på tycke och smak vad man tycker är "enklare". Tänkte inte på att slänga på en extra fråga som Niklas föreslog sen får jag se om jag använder JOIN versionen eller inte.MSSQL Select och addera Alias värden
    
    
Den här fungerar bra
<code>
SELECT     VerkID, 
             (SELECT     SUM(columnX) AS Expr1
                FROM         Table1
                WHERE      (t3.VerkID = VerkID)) AS Sum1,
             (SELECT     SUM(columnY) AS Expr1
                FROM          Table2
                WHERE      (t3.VerkID = VerkID)) AS Sum2
FROM         Table3 AS t3
</code>
men jag vill även lägga till en total, Sum1 + Sum2, men får då ett felmeddelande som säger att det är "invalid column name". Går det inte att använda Alias-namnen på så sätt i Select-uttrycket? Det går ju att använda dem i t ex Order By Sum1
<code>
SELECT     VerkID, 
             (SELECT     SUM(columnX) AS Expr1
                FROM         Table1
                WHERE      (t3.VerkID = VerkID)) AS Sum1,
             (SELECT     SUM(columnY) AS Expr1
                FROM          Table2
                WHERE      (t3.VerkID = VerkID)) AS Sum2,
	(Sum1 + Sum2) AS Total	
FROM         Table3 AS t3
</code>Sv: MSSQL Select och addera Alias värden
    
    
SELECT Sum1, Sum2, (Sum1 + Sum2) AS Total	
FROM (SELECT     VerkID, 
             (SELECT     SUM(columnX) AS Expr1
                FROM         Table1
                WHERE      (t3.VerkID = VerkID)) AS Sum1,
             (SELECT     SUM(columnY) AS Expr1
                FROM          Table2
                WHERE      (t3.VerkID = VerkID)) AS Sum2,
FROM         Table3 AS t3)
Sen föredrar jag ju personligen att inte lägga anrop i kolumnangivelserna. Har du någon speciell anledning, för annars borde du väl kunna göra den första delen med två joinar istället?
SELECT     t3.VerkID, t1.sum As Sum1, t2.sum as Sum2
FROM ((table3 as t3 LEFT JOIN
(SELECT VerkID, SUM(ColumnX) FROM table1 GROUP BY VerkID) AS t1) LEFT JOIN
(SELECT VerkID, SUM(ColumnY) FROM table2 GROUP BY VerkID) AS t2)
    Sv: MSSQL Select och addera Alias värden
    
    
För att slippa dubblera koden så kan du använda en CTE (ommon Table Expression).
<code>
; WITH GetSum AS
(
    SELECT     
        VerkID, 
        (SELECT SUM(columnX) FROM Table1 WHERE (t3.VerkID = VerkID)) AS Sum1,
        (SELECT SUM(columnY) FROM Table2 WHERE (t3.VerkID = VerkID)) AS Sum2
    FROM Table3 AS t3
)
SELECT VerkID, Sum1, Sum2, Sum1 + Sum2 AS Total FROM GetSum;
</code> Sv: MSSQL Select och addera Alias värden
    
    
Båda (ditt första exempel) gör jobbet.
Men man spar ju ca 15 - 20 tecken på ditt förslag (om det nu var det som var enklare??).
För övrigt så behöver man ta bort ett komma,
och lägga till ett alias på den yttre för att ditt förslag ska "flyga".
Båda ger också samma exekverings plan.
:-)Sv: MSSQL Select och addera Alias värden
    
    
Nu har man lärt sig något nytt igen.
Tack för hjälpen och God Jul