我有数据查询与我,它提供版本的视窗更新
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 我们得到的输出
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和计数是添加以下
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的总计数
发布于 2019-02-12 19:36:26
下面将创建version0的子字符串,直到最后一个点和该点之后的任何内容
SELECT SUBSTRING(v.version0, 1,
LEN(v.version0) - CHARINDEX('.', REVERSE(v.version0))) AS version为了使表名更具可读性,我对表名使用了别名。
FROM v_GS_WINDOWSUPDATEAGENTVERSIO AS v发布于 2019-02-12 19:36:48
把零件放到第三个点上
SELECT SUBSTRING(Version0, 1, CHARINDEX('.',Version0+'.', CHARINDEX('.', Version0, CHARINDEX('.', Version0)+1)+1)-1) AS Version3在第一个CHARINDEX函数中,将一个点附加到Version0 (这将成为SUBSTRING的长度参数),以允许使用少于3个点的Version0,或者根本不使用任何点。
发布于 2019-02-12 19:45:28
根据最后一个'.‘的字符索引获取v_GS_WINDOWSUPDATEAGENTVERSIO.Version0的左子字符串使用REVERSE函数
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)))https://stackoverflow.com/questions/54648617
复制相似问题