sql - 使用 CharIndex 函数在列的子字符串上选择 Distinct
问题描述
我有 fullName 列,其中包含连接的名字和姓氏,用“-”分隔。我正在尝试选择不同的名字并进行计数(*)以查看有多少 Toms、Janes、Harry's 等......存在。
SELECT DISTINCT LEFT(fullName, CHARINDEX('-',fullName,0)-1) as firstName, count(*) as numOfNames
FROM tblFullNames
GROUP BY fullName
当我运行上面的代码时,我得到了一个正确的名字列表,但我得到一个“1”作为每个条目的名字数量的结果,即使我知道有多个 Tom's、Jane's 等......
请指教。谢谢!
解决方案
您按全名分组。你可以重复这个表达式。. . 或使用cross apply
:
SELECT v.firstName, count(*) as numOfNames
FROM tblFullNames fn CROSS APPLY
(VALUES (LEFT(fn.fullName, CHARINDEX('-', fn.fullName, 0) - 1)
)
) v(firstName)
GROUP BY v.firstName;
推荐阅读
- dashboard - 如何在 Looker 中创建“子仪表板”?
- reactjs - 覆盖,点击消失,reactjs
- node.js - 在多个数据库mongodb集群上实现事务[node mongoose]
- ruby-on-rails - 将 ruby 版本更新到 3.0.2 后,Rails 生成迁移不起作用
- r - 根据前一天在R中填写值
- powershell - 如何按名称顺序连接目录中所有文件的内容?
- javascript - 如何检查提供给回调的参数数量?
- python - 我只想打印 1 个来自 GoogleNews 的报道
- php - 从查询 Wordpress 中排除自定义帖子类型
- angular - Angular Reactive Forms:使用与输入/控件中显示的值不同的值更新表单模型?