如何在 Sql Server 中使用动态生成的字段进行添加?
Posted
技术标签:
【中文标题】如何在 Sql Server 中使用动态生成的字段进行添加?【英文标题】:how to do addition In Sql Server using dynamic generated field? 【发布时间】:2017-07-05 13:33:40 【问题描述】:我有一张名为“购物车”的桌子。字段是:
CartId
ClientId
ProductId
Qty
现在我将与ProductMaster
加入此表以获得ProductName
和ProuctPrice
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
现在我想使用动态字段SubTotal
生成GrandTotal
。我该怎么做?
【问题讨论】:
移除无关的mysql标签 添加一些示例表数据和预期结果。 (作为格式化文本。) 【参考方案1】: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
这不是正确的 Rollup 方法,但你的也不是,所以这可以正常工作
【讨论】:
这不会生成单独的总计字段。! @DevKriya 编辑您的问题以更好地解释。此外,SQL 有列,即使在结果中也是如此。字段不是 SQL 对象,因此解释为一行【参考方案2】:试试这个:
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;
【讨论】:
以上是关于如何在 Sql Server 中使用动态生成的字段进行添加?的主要内容,如果未能解决你的问题,请参考以下文章