2017-07-05 28 views
1

我有名为“购物车”的表。字段是:如何做添加在Sql Server中使用动态生成字段?

  • CartId
  • ClientId
  • ProductId
  • Qty

现在我加入这个表ProductMaster得到ProductNameProuctPrice

select cc.CartId,cc.ProductId,pm.ProductName,cc.Qty, 
     (pm.ProductPrice * cc.Qty) As SubTotal 
from ClientCart as cc 
    inner join ProductMaster as pm on cc.ProductId = pm.ProductId 

现在我想生成GrandTotal使用动态字段SubTotal。我怎样才能做到这一点?

+0

去掉无关的MySQL标签 – Jens

+0

添加一些示例表数据和预期的结果。 (作为格式文本。) – jarlh

回答

0
with CTE as 
(
select cc.CartId,cc.ProductId,pm.ProductName,cc.Qty, 
     (pm.ProductPrice * cc.Qty) As SubTotal 
from ClientCart as cc 
    inner join ProductMaster as pm on cc.ProductId = pm.ProductId 
where cc.ClientId = @id 
) 
select * 
from CTE 
union 
select null,null, null,null, sum(SubTotal) -- this is a grand total of all sub totals 
from CTE 

这不是正确的汇总方法,但也不是你的所以这将很好地工作

+0

这不是生成单独的grandtotal字段。 – DevKriya

+0

@DevKriya编辑你的问题来解释更好。另外,即使在结果中,SQL也有列。字段不是SQL对象,因此解释为一行 – JohnHC

0

试试这个:

select subtable.CartId, sum(subtable.SubTotal) 
from (
select cc.CartId,cc.ProductId,pm.ProductName,cc.Qty, 
     (pm.ProductPrice * cc.Qty) As SubTotal 
from ClientCart as cc 
inner join ProductMaster as pm on cc.ProductId = pm.ProductId 
where cc.ClientId = @id) subtable 
group by subtable.CartId;