You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server查询两列含FOO时获取另一列值及计数的实现方法

问题背景

当前使用SQL Server LocalDB,查询目标表包含两列:COL_LEFT、COL_RIGHT。
查询需求:

  • 筛选两列中任意一列值为FOO的所有行
  • 最终返回两列结果:
    • 第一列:与FOO同行的另一列取值。即FOO在COL_LEFT时取对应行COL_RIGHT的值,FOO在COL_RIGHT时取对应行COL_LEFT的值
    • 第二列:上述对应值的总出现次数
      预期效果示例:
      查询效果示例
实现代码

核心思路是先通过UNION ALL归集两种匹配场景下的待统计值,再分组计数,语句如下:

SELECT
    MatchValue,
    COUNT(*) AS TotalCount
FROM (
    -- FOO出现在左列时,取对应右列值
    SELECT COL_RIGHT AS MatchValue FROM 你的表名 WHERE COL_LEFT = 'FOO'
    UNION ALL
    -- FOO出现在右列时,取对应左列值
    SELECT COL_LEFT AS MatchValue FROM 你的表名 WHERE COL_RIGHT = 'FOO'
) AS temp
GROUP BY MatchValue
说明
  • 用UNION ALL而非UNION是为了避免自动去重导致计数偏差
  • 实际使用时将语句中的你的表名替换为真实表名即可,可按需加ORDER BY子句对结果排序

内容的提问来源于stack exchange,提问作者Totallama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 21:39:28