我试图创建一个在数据库中添加额外ROW的查询。
以下是我开始使用的内容:
PerfAttribAlphaID ProductID AsOfDate AlphaSourceDesc PerfAttribValue
1 1 2014-06-30 Currency 0.00000000
2 1 2014-06-30 Macro 50.00000000
3 1 2014-06-30 Quantitative 10.00000000
4 1 2014-06-30 Credit 90.00000000
以下是我试图结束的内容:
PerfAttribAlphaID ProductID AsOfDate AlphaSourceDesc PerfAttribValue
1 1 2014-06-30 Currency 0.00000000
2 1 2014-06-30 Macro 50.00000000
3 1 2014-06-30 Quantitative 10.00000000
4 1 2014-06-30 Credit 90.00000000
其中PerfAttribAlphaID是主键(bigint)并且对于表中的每一行递增1,ProductID和AsOfDate是输入参数,AlphaSourceDesc是Total,PerfAttribValue是表中所有先前行的总和。
答案 0 :(得分:1)
您没有显示您的查询,所以我只是在这里猜测,但基本的想法是使用union select
:
之前:
select PerfAttribAlphaID, ProductID, AsOfDate, AlphaSourceDesc, PerfAttribValue
from T
后:
select PerfAttribAlphaID, ProductID, AsOfDate, AlphaSourceDesc, PerfAttribValue
from T
union
select null, null, null, 'Total', sum(PerfAttribValue)
from T
答案 1 :(得分:0)
您可以使用 GROUPING SETS 生成总行:
select PerfAttribAlphaID,
ProductID,
AsOfDate,
case when grouping(PerfAttribValue) = 1 then 'Total' else AlphaSourceDesc end AlphaSourceDesc,
SUM(PerfAttribValue) PerfAttribValue
from MyTable
group by grouping sets((PerfAttribAlphaID, ProductID, AsOfDate, AlphaSourceDesc, PerfAttribValue), ())
如果您有多个ProductId并希望获得每个ProductIds的小计,则可以修改此查询。 This SQL Fiddle证明了这一点。