首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何填充额外的行,使每个案例都有15条记录

如何填充额外的行,使每个案例都有15条记录
EN

Stack Overflow用户
提问于 2014-04-03 06:44:13
回答 1查看 107关注 0票数 1

我有以下存储过程:

代码语言:javascript
复制
select rcl.ReportRunCaseId AS CaseId,
ROW_NUMBER() over(
  PARTITION BY rcl.reportruncaseId 
  ORDER BY rcl.reportruncaseid) as Row, 
YEAR(rce.EcoDate) AS EcoYear,
SUM(rce.NetInv) AS NetInv, 
SUM(rce.NDCash) AS NDCash, 
SUM(rce.DCash) AS DiscCash, 
SUM(rce.GrossGas) AS GrossGas, 
SUM(rce.GrossOil) AS GrossOil, 
SUM(rce.NetProdTax) AS NetProdTax, 
SUM(rce.NetOpCost) AS NetOpCost, 
SUM(rce.NetFixedCost) AS FixedCost, 
SUM(rce.NetTransCost) AS NetTransCost, 
SUM(rce.NetOtherCost) AS NetOtherCost 

From PhdRpt.RptCaseEco_6 rce
INNER JOIN PhdRpt.ReportCaseList_6 rcl 
ON rce.ReportRunCaseId = rcl.ReportRunCaseId 
AND rce.ReportId = 6
inner join PhdRpt.EcoIndicators_6 ei 
ON ei.ReportRunCaseId = rcl.ReportRunCaseId 
where rce.ReportId = 6
group by rcl.ReportRunCaseId, year(rce.EcoDate)

这将产生以下输出:

代码语言:javascript
复制
CaseId    Row     EcoYear ....
   1       1        2005
   1       2        2006
   1       3        2007
   1       4        2008
   1       5        2009
   1       6        2010
   2       1        2005
   3       1        2005
   3       2        2006
   3       3        2007
   4       1        2005
   4       2        2006
   .
   .
   .
   .

我需要为每个CaseId设置15行。其余列中缺少的数据应为null。

我的第一个想法是创建一个行号为1-15的临时表,然后将这些表连接在一起,但它给了我太多的记录。

代码语言:javascript
复制
  IF OBJECT_ID (N'tempdb.dbo.#temp') IS NOT NULL
   DROP TABLE #temp

CREATE TABLE #temp
(
      Rows CHAR(2)

)

Insert INTO #temp (Rows)
Values (1),(2),(3),(4),(5), 
       (6),(7),(8),(9), (10),
       (11),(12),(13),(14), (15)

我应该如何处理这个问题?友联市?

EN

回答 1

Stack Overflow用户

发布于 2014-04-03 06:48:10

你在正确的轨道上。我建议为这一点和将来的目的创建一个Numbers表,但这并不重要。获取一个从1到15的数字列表,然后根据您现有的逻辑进行LEFT JOIN。为每个数字返回一条记录,其中包含来自报告表的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22824526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档