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

SQL中满足多列条件时如何生成多条对应Line_Code记录?

实现多条件时生成多行记录的SQL方案

原来的CASE表达式每条记录只能返回一个Line_Code,没法在同时满足两个条件时生成两条记录。要达成需求,有两种常用方案:

方案一:用UNION ALL拆分条件查询

把两个条件分别写成独立的SELECT语句,再用UNION ALL合并结果,这样符合条件的记录都会被保留,包括同时满足两个条件时生成的两行:

SELECT unique_ID, '18' AS Line_Code
FROM SampleTable
WHERE Columna > '0'
UNION ALL
SELECT unique_ID, '06' AS Line_Code
FROM SampleTable
WHERE Columnb > '0'
ORDER BY unique_ID, Line_Code DESC;

这段代码逻辑很直接:

  • 第一个查询筛选出Columna > '0'的记录,固定返回Line_Code = '18'
  • 第二个查询筛选出Columnb > '0'的记录,固定返回Line_Code = '06'
  • UNION ALL不会去重,所以同时满足两个条件的记录会生成两行结果
  • 最后加排序让输出更规整

方案二:用CROSS JOIN生成候选值再过滤

先构造一个包含目标Line_Code的临时数据集,和原表交叉连接后,再根据对应列的条件过滤掉不符合的组合:

SELECT s.unique_ID, c.Line_Code
FROM SampleTable s
CROSS JOIN (
    SELECT '18' AS Line_Code, 'Columna' AS ColName
    UNION ALL
    SELECT '06' AS Line_Code, 'Columnb' AS ColName
) c
WHERE (c.ColName = 'Columna' AND s.Columna > '0')
   OR (c.ColName = 'Columnb' AND s.Columnb > '0')
ORDER BY s.unique_ID, c.Line_Code DESC;

这种方式的好处是如果后续需要新增更多Line_Code规则,只需要在临时数据集中加行就行,扩展性更强。

两种方案都能得到你期望的输出:当某条记录同时满足Columna > '0'和Columnb > '0'时,会生成两条对应不同Line_Code的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 17:50:07