首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSRS-2012中权重和倍数的提取

SSRS-2012中权重和倍数的提取
EN

Stack Overflow用户
提问于 2020-06-16 17:10:20
回答 1查看 22关注 0票数 0

这是我的问题:

代码语言:javascript
复制
SELECT [Data] from usrrpt.Expansion EX WHERE EX.Order_PK = '231503796' AND EX.FieldName_PK like 'SHIPCOMMENT%' 

返回的数据如下:

数据:

代码语言:javascript
复制
5 PLTS(STC: 20 CTNS)DIM:80X71X155CM@122KG

80X71X120CM@95KG X2, 80X71X120CM@96KG X4, 80X71X107CM@76KG

80X71X109CM@86KG X 7

如何获得权重的总和(122 + 95 * 2 + 96 * 4 + 76 + 86 * 7)?

EN

回答 1

Stack Overflow用户

发布于 2020-06-16 17:49:57

这在SQL中比在SSRS中更容易实现。这在SSRS中是完全可以做到的,但是表达式会变得混乱。通常最好的做法是在服务器上完成数据方面的工作,并且在可能的情况下只在报告中完成表示。

我就是这么做的。

它依赖于以下假设。

  1. 权重始终在第一个'@‘和下一个'KG’之间
  2. 乘数始终在权重之后,并且前面有一个X
  3. 如果在‘KG’后面找不到'X‘,则乘数为1

我做的第一件事是重新创建数据,然后编写一个子查询,以数字形式提取权重和乘数值,然后将其包装在另一个查询中,该查询执行简单的计算,以证明我们有可用的数据可用。

代码语言:javascript
复制
DECLARE @t TABLE([Data] varchar(1000))

INSERT INTO @t VALUES 
('5 PLTS(STC: 20 CTNS)DIM:80X71X155CM@122KG'),
('80X71X120CM@95KG X2'),
('80X71X120CM@96KG X4'),
('80X71X107CM@76KG'),
('80X71X109CM@86KG X 7')

SELECT *, WeightKG * Multi as TotalWeight
FROM (
SELECT 
    *
    , WeightKG = CAST(SUBSTRING(
                            [Data] , 
                            CHARINDEX('@', [Data]) +1 ,  
                            CHARINDEX('KG', [Data], CHARINDEX('@', [Data])) - CHARINDEX('@', [Data]) - 1 
                            )
                        as Float)
    , Multi = CAST(
                        CASE CHARINDEX('X', [Data], CHARINDEX('KG', [Data]))
                            WHEN 0 THEN 1 
                            ELSE LTRIM(RTRIM(
                                            SUBSTRING(
                                                [Data] , 
                                                CHARINDEX('X', [Data], CHARINDEX('KG', [Data])) + 1, 
                                                LEN([Data]) - CHARINDEX('X', [Data], CHARINDEX('KG', [Data])) + 1
                                                )
                                            ))
                        END
                        AS Float)

 FROM @t
) x

如果运行此查询,您将获得以下结果。

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

https://stackoverflow.com/questions/62404961

复制
相关文章

相似问题

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