Csv 在具有逗号分隔值的列中生成不同值的计数

Csv 在具有逗号分隔值的列中生成不同值的计数,csv,select,count,distinct,comma,Csv,Select,Count,Distinct,Comma,--最终更新-- 仅供参考-了解如何做到这一点。基本上,我将下面的每个计数查询与联合查询串在一起 --更新-- 我在下面的问题上取得了一些进展。我现在可以为每个pet类型得到一个和,但是每个值都在它们自己的列中(我需要它们进行转换——列-行)。我尝试使用UNPIVOT函数,但它似乎与红移不兼容。还有其他想法吗?(请注意,类别是静态的,这14个类别永远不会更改或具有新的可能值) 这是我目前的疑问: SELECT count(case when vet.pets like '%dog%' THEN

--最终更新-- 仅供参考-了解如何做到这一点。基本上,我将下面的每个计数查询与联合查询串在一起

--更新--

我在下面的问题上取得了一些进展。我现在可以为每个pet类型得到一个和,但是每个值都在它们自己的列中(我需要它们进行转换——列-行)。我尝试使用UNPIVOT函数,但它似乎与红移不兼容。还有其他想法吗?(请注意,类别是静态的,这14个类别永远不会更改或具有新的可能值)

这是我目前的疑问:

SELECT 
count(case when vet.pets like '%dog%' THEN 1 ELSE NULL END) AS dog
,  count(case when vet.pets like '%cat%' THEN 1 ELSE NULL END) as cat
,  count(case when vet.pets like '%rat%' THEN 1 ELSE NULL END) as rat
,  count(case when vet.pets like '%bird%' THEN 1 ELSE NULL END) as bird
,  count(case when vet.pets like '%fish%' THEN 1 ELSE NULL END) as fish
,  count(case when vet.pets like '%hamster%' THEN 1 ELSE NULL END) as hamster
,  count(case when vet.pets like '%ferret%' THEN 1 ELSE NULL END) as ferret
,  count(case when vet.pets like '%horse%' THEN 1 ELSE NULL END) as horse
,  count(case when vet.pets like '%zebra%' THEN 1 ELSE NULL END) as zebra
,  count(case when vet.pets like '%bear%' THEN 1 ELSE NULL END) as bear
,  count(case when vet.pets like '%alligator%' THEN 1 ELSE NULL END) as alligator
,  count(case when vet.pets like '%sugar_glider%' THEN 1 ELSE NULL END) as sugar_glider
,  count(case when vet.pets like '%tiger%' THEN 1 ELSE NULL END)  as tiger
,  count(case when vet.pets like '%rock%' THEN 1 ELSE NULL END) as rock
FROM vet
这将产生:

dog | cat | rat | bird | fish | hamster | ferret | horse | zebra | bear | alligator | sugar_glider | tiger | rock  
3 | 5 | 2 | 6 | 8 | 1 | 8 | 5 | 1 | 3 | 2 | 2 | 4 | 2 
我需要它的格式:

dog | 3
cat | 5
rat | 2
bird | 6
fish | 8
hamster | 1
ferret | 8
horse | 5
zebra | 1
bear | 3
alligator | 2
sugar_glider | 2
tiger | 4
rock | 2

原创帖子

我正在尝试创建一个SQL查询(红移),它将计算一组值在包含逗号分隔值的列中出现的次数。每个值只能在单个记录中出现一次,每个记录必须至少包含一个值,但可以包含多个值。我尝试使用case语句为每条记录创建计数器列

case when [column] like '%value1%' then 1 else 0 as value_1,
case when [column] like '%value2%' then 1 else 0 as value_2,
etc.
然而,我很难用一种方式来总结这些理货栏,从而为每个不同的值提供一个计数。有什么想法吗

例如,以下列是兽医表的一部分。“宠物”一栏代表每个兽医诊所使用的宠物类型

宠物
猫、鱼、狗
猫、狗

狗、鸟、鱼
鱼、老鼠、猫

我需要制作一个兽医诊所计数,将看到每个宠物类型

所需输出
鸟| 1
第3类
狗| 4
鱼| 3
鼠| 1


先谢谢你

如果您是Windows用户,并且使用EmEditor(我开发的Windows文本编辑器),则可以分析所选内容中的单词并创建CSV文件。打开并选择EmEditor中的“pets”列,在搜索菜单上选择提取频繁字符串,设置单词选项和仅选择选项中的,在行数中输入较大的数字,如果愿意,选择一种CSV格式,然后单击OK

您将获得一个CSV文档,其中包含频繁出现的单词和每个单词的编号。最后,要按第一个“pet”列排序,您可以选择编辑菜单>排序将A排序到Z

如果您是Windows用户,并且使用EmEditor(我开发的Windows文本编辑器),则可以分析所选内容中的单词并创建CSV文件。打开并选择EmEditor中的“pets”列,在搜索菜单上选择提取频繁字符串,设置单词选项和仅选择
选项中的,在行数中输入较大的数字,如果愿意,选择一种CSV格式,然后单击OK

您将获得一个CSV文档,其中包含频繁出现的单词和每个单词的编号。最后,要按第一个“pet”列排序,您可以选择编辑菜单>排序将A排序到Z

想出了如何做到这一点。基本上,我将下面的每个计数查询与联合查询串在一起。

找到了如何做到这一点。基本上,我将下面的每个计数查询与联合查询串联在一起。

感谢您的建议,但我希望能够在SQL中实现这一点。我正在创建一个视图,该视图将用作tableau报表的数据源。很抱歉,我无法确定您正在使用的应用程序和环境。我建议你改进你的问题。谢谢,我刚刚意识到我的问题不清楚。我更新了问题。让我知道这是否有助于澄清。再次感谢您。感谢您的建议,但我希望能够从SQL内部做到这一点。我正在创建一个视图,该视图将用作tableau报表的数据源。很抱歉,我无法确定您正在使用的应用程序和环境。我建议你改进你的问题。谢谢,我刚刚意识到我的问题不清楚。我更新了问题。让我知道这是否有助于澄清。再次感谢你。