SQL Server 用于隔离插入到单列中的多个数据的查询

bxgwgixi  于 2023-02-03  发布在  其他
关注(0)|答案(1)|浏览(120)

有一台机器是由多个零件制成的,这些零件来自两个不同的国家,需要找到来自每个国家的零件所占的百分比。
| 机器|部件_使用|IN部分的%|CH部分的%|
| - ------|- ------|- ------|- ------|
| M_001|输入_001、输入_001、输入_002、输入_002、输入_003、输入_004、输入_005、|||
| M_002|输入_0011、通道_0011、输入_0012、通道0012、通道_0013、通道_0014、通道_001|||

select count(*) as "% of CH parts"
from tablename
where Parts_Used like 'CH%';

使用该器械,但未获得结果。

trnvg8h3

trnvg8h31#

试试这个:

SELECT MP.[Machine]
      ,SUM(IIF(CHARINDEX('IN_', PU.[value]) > 0, 1, 0)) * 100.0 / COUNT(*) AS [% of IN part]
      ,SUM(IIF(CHARINDEX('CH_', PU.[value]) > 0, 1, 0)) * 100.0 / COUNT(*) AS [% of CH parts]
FROM machine_parts MP
CROSS APPLY STRING_SPLIT (Parts_Used, ',') PU
GROUP BY MP.[Machine]

我们的想法是将值拆分为现在我们拥有的部分,并使用SUM和IIF轻松执行条件计数。基本上,我们有以下内容:

SELECT *
FROM machine_parts MP
CROSS APPLY STRING_SPLIT (Parts_Used, ',') PU

然后数着。

相关问题