首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SSRS从数据集中插入特定值

SSRS从数据集中插入特定值
EN

Stack Overflow用户
提问于 2021-05-04 21:53:04
回答 1查看 30关注 0票数 0

我是SQL和SSRS的新手。我面临以下问题-这里是数据库(简化):

代码语言:javascript
运行
复制
Office  Hours   Year  Quarter  
  A       3     2020     1
  B       6     2020     2
  C       9     2020     1
  D       11    2020     2
  E       5     2020     2
  OX      20    2020     1

我已经创建了一个Marix,它将季度分组并显示每个办公室的小时数,除了最后一个,并有一个列计算总时数的百分比,不包括最后一个办公室(例如,办公室A有3小时34,所以8.823%,办公室B有6小时34,所以17.647%等等)。我想要实现的是创建一个如下所示的表:

代码语言:javascript
运行
复制
OX Allocation |    qt 
------------------------
      A          1.764 
      B          3.528 

所以把牛的时间分配给其他的办公室。

但老实说,我无法做到这一点,我不知道如何开始选择Office OX (20)的特定值我知道这不是完全正确的季度方面,但我需要的是了解如何隔离列中的特定值并进行分配计算

提前感谢!

编辑:抱歉,我在第二个表中添加了百分比的解释。(我还更正了一个数字错误)

20 * (8.823/100) = 1.764 (对于办公室A) 20 * (17.647/100) = 3.528 (对于办公室B)

EN

回答 1

Stack Overflow用户

发布于 2021-05-04 23:56:43

如果要在SQL中执行此操作(在数据集查询中执行此类操作通常比使用SSRS表达式更容易),则可以执行以下操作

代码语言:javascript
运行
复制
DECLARE @t TABLE(Office varchar(2), Hours decimal (10,6), Year int , Quarter int)

INSERT INTO @t VALUES 
('A' ,  3, 2020, 1),
('B' ,  6, 2020, 2),
('C' ,  9, 2020, 1),
('D' , 11, 2020, 2),
('E' ,  5, 2020, 2),
('OX', 20, 2020, 1)

SELECT 
    a.*
    , a.pc * o.[Hours] as OxAllocation
 FROM 
    (
    SELECT 
        *
        , pc = Hours /SUM(Hours) OVER()
        FROM @t
        WHERE Office != 'OX'
    ) a 
    CROSS JOIN (SELECT * FROM @t WHERE Office = 'OX') o

这将产生以下结果

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

https://stackoverflow.com/questions/67386187

复制
相关文章

相似问题

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