首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要在SQL中有到3个点的数据

需要在SQL中有到3个点的数据
EN

Stack Overflow用户
提问于 2019-02-12 19:02:31
回答 4查看 135关注 0票数 0

我有数据查询与我,它提供版本的视窗更新

代码语言:javascript
运行
复制
DECLARE @variable VARCHAR

SET @variable = 'Windows client Update'

SELECT DISTINCT (v_GS_WINDOWSUPDATEAGENTVERSIO.Version0) AS version,
    count(v_R_System.Netbios_Name0) AS modelcount,
    'Windows client Update' AS productname,
    (
        CAST((
                CAST(count(*) AS DECIMAL(18, 2)) / CAST((
                        SELECT count(v_R_System.Netbios_Name0)
                        FROM v_R_System
                        ) AS DECIMAL(18, 2))
                ) * 100 AS DECIMAL(18, 2))
        ) AS 'Percent',
    '%' AS per
FROM v_GS_WINDOWSUPDATEAGENTVERSIO
INNER JOIN v_R_System ON v_GS_WINDOWSUPDATEAGENTVERSIO.ResourceID = v_R_System.ResourceID
WHERE v_GS_WINDOWSUPDATEAGENTVERSIO.Version0 <> 'ISNULL'
--ORDER BY v_GS_WINDOWSUPDATEAGENTVERSIO.Version0
GROUP BY v_GS_WINDOWSUPDATEAGENTVERSIO.Version0 

我们得到的输出

代码语言:javascript
运行
复制
    version modelcount  productname Percent per
    10.0.14393.0    2   Windows client Update   0.00    %
    10.0.14393.1670 84  Windows client Update   0.11    %
    10.0.14393.2189 2   Windows client Update   0.00    %
    10.0.14393.2273 3   Windows client Update   0.00    %
    10.0.14393.2395 265 Windows client Update   0.33    %
    10.0.14393.2608 3   Windows client Update   0.00    %
    10.0.14393.351  7   Windows client Update   0.01    %
    10.0.15063.0    480 Windows client Update   0.61    %
    10.0.15063.1155 11  Windows client Update   0.01    %
    10.0.15063.1235 278 Windows client Update   0.35    %
    10.0.15063.1292 29  Windows client Update   0.04    %
    10.0.15063.1446 8455    Windows client Update   10.67   %
    10.0.15063.483  161 Windows client Update   0.20    %
    10.0.15063.966  1   Windows client Update   0.00    %
    10.0.16299.637  1   Windows client Update   0.00    %
    10.0.17134.1    10  Windows client Update   0.01    %
    10.0.17134.320  2   Windows client Update   0.00    %
    10.0.17134.376  2   Windows client Update   0.00    %
    10.0.17134.471  231 Windows client Update   0.29    %
    10.0.17763.107  10  Windows client Update   0.01    %
    10.0.17763.168  10  Windows client Update   0.01    %
    10.0.17763.292  55  Windows client Update   0.07    %
    10.0.18282.1000 1   Windows client Update   0.00    %
    7.4.7600.226    571 Windows client Update   0.72    %
    7.5.7601.17514  27  Windows client Update   0.03    %
    7.6.7600.256    606 Windows client Update   0.76    %
    7.6.7600.320    1   Windows client Update   0.00    %

7.6.7601.19016  10  Windows client Update   0.01    %
7.6.7601.19161  80  Windows client Update   0.10    %
7.6.7601.23735  129 Windows client Update   0.16    %
7.6.7601.23806  6489    Windows client Update   8.19    %
7.6.7601.24085  51081   Windows client Update   64.46   %
7.8.9200.16384  2   Windows client Update   0.00    %
7.8.9200.16547  171 Windows client Update   0.22    %
7.9.9600.16403  15  Windows client Update   0.02    %
7.9.9600.16422  1   Windows client Update   0.00    %
7.9.9600.17092  8   Windows client Update   0.01    %
7.9.9600.17415  11  Windows client Update   0.01    %
7.9.9600.18696  18  Windows client Update   0.02    %
7.9.9600.18838  41  Windows client Update   0.05    %
7.9.9600.18970  200 Windows client Update   0.25    %
7.9.9600.19164  2026    Windows client Update   2.56    %

我需要版本高达3个点,如7.6.7601或7.9.9600和计数是添加以下

代码语言:javascript
运行
复制
10.0.14393.0    2   Windows client Update   0.00    %
10.0.14393.1670 84  Windows client Update   0.11    %
10.0.14393.2189 2   Windows client Update   0.00    %
10.0.14393.2273 3   Windows client Update   0.00    %
10.0.14393.2395 265 Windows client Update   0.33    %
10.0.14393.2608 3   Windows client Update   0.00    %
10.0.14393.351  7   

表中的84+2+3+265+3+7

意味着我将需要一行用于版本10.0.14393的总计数

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-02-12 19:36:26

下面将创建version0的子字符串,直到最后一个点和该点之后的任何内容

代码语言:javascript
运行
复制
SELECT SUBSTRING(v.version0, 1, 
                 LEN(v.version0) - CHARINDEX('.', REVERSE(v.version0))) AS version

为了使表名更具可读性,我对表名使用了别名。

代码语言:javascript
运行
复制
FROM v_GS_WINDOWSUPDATEAGENTVERSIO AS v
票数 2
EN

Stack Overflow用户

发布于 2019-02-12 19:36:48

把零件放到第三个点上

代码语言:javascript
运行
复制
SELECT SUBSTRING(Version0, 1, CHARINDEX('.',Version0+'.', CHARINDEX('.', Version0, CHARINDEX('.', Version0)+1)+1)-1) AS Version3

在第一个CHARINDEX函数中,将一个点附加到Version0 (这将成为SUBSTRING的长度参数),以允许使用少于3个点的Version0,或者根本不使用任何点。

票数 1
EN

Stack Overflow用户

发布于 2019-02-12 19:45:28

根据最后一个'.‘的字符索引获取v_GS_WINDOWSUPDATEAGENTVERSIO.Version0的左子字符串使用REVERSE函数

代码语言:javascript
运行
复制
SELECT DISTINCT (LEFT(@test, LEN(v_GS_WINDOWSUPDATEAGENTVERSIO.Version0) - CHARINDEX('.', REVERSE(v_GS_WINDOWSUPDATEAGENTVERSIO.Version0)))) AS version,
    count(v_R_System.Netbios_Name0) AS modelcount,
    'Windows client Update' AS productname,
    (
        CAST((
                CAST(count(*) AS DECIMAL(18, 2)) / CAST((
                        SELECT count(v_R_System.Netbios_Name0)
                        FROM v_R_System
                        ) AS DECIMAL(18, 2))
                ) * 100 AS DECIMAL(18, 2))
        ) AS 'Percent',
    '%' AS per
FROM v_GS_WINDOWSUPDATEAGENTVERSIO
INNER JOIN v_R_System ON v_GS_WINDOWSUPDATEAGENTVERSIO.ResourceID = v_R_System.ResourceID
WHERE v_GS_WINDOWSUPDATEAGENTVERSIO.Version0 <> 'ISNULL'
--ORDER BY v_GS_WINDOWSUPDATEAGENTVERSIO.Version0
GROUP BY LEFT(@test, LEN(v_GS_WINDOWSUPDATEAGENTVERSIO.Version0) - CHARINDEX('.', REVERSE(v_GS_WINDOWSUPDATEAGENTVERSIO.Version0)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54648617

复制
相关文章

相似问题

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