如何在SQL Server中使用别名添加两列?

时间:2016-01-03 05:01:05

标签: sql sql-server database

这是我的查询,我想通过添加total_qty + s.item_qty + grn_qty来计算总数issues_qty。是否可以使用别名添加列值?

SELECT s.items_no, 
       s.item_desc, 
       s.item_qty, 
       (SELECT Isnull(Sum(g.qty), 0) 
        FROM   grn_details g 
        WHERE  g.items_no = s.items_no)      grn_qty, 
       (SELECT Isnull(Sum(i.qty), 0) 
        FROM   stk_issue_details i 
        WHERE  i.items_no = s.items_no)      issues_qty, 
       ( s.item_qty + grn_qty + issues_qty ) total_qty 
FROM   stocks s 

1 个答案:

答案 0 :(得分:5)

您可以在outer query中执行此操作,而不是在生成alias的同一查询中。

SELECT items_no, 
       item_desc, 
       item_qty, 
       grn_qty, 
       issues_qty, 
       total_qty = grn_qty + issues_qty 
FROM   (SELECT s.items_no, 
               s.item_desc, 
               s.item_qty, 
               (SELECT Isnull(Sum(g.qty), 0) 
                FROM   grn_details g 
                WHERE  g.items_no = s.items_no) grn_qty, 
               (SELECT Isnull(Sum(i.qty), 0) 
                FROM   stk_issue_details i 
                WHERE  i.items_no = s.items_no) issues_qty 
        FROM   stocks s) a 

或者您可以使用OUTER APPLY,只需要一个select

SELECT s.items_no, 
       s.item_desc, 
       s.item_qty, 
       grn_qty, 
       issues_qty, 
       total_qty = grn_qty + issues_qty 
FROM   stocks s 
       OUTER apply (SELECT Isnull(Sum(g.qty), 0) 
                    FROM   grn_details g 
                    WHERE  g.items_no = s.items_no) g(grn_qty) 
       OUTER apply (SELECT Isnull(Sum(i.qty), 0) 
                    FROM   stk_issue_details i 
                    WHERE  i.items_no = s.items_no) i (issues_qty)