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

SQL Server基于isActive条件生成firstDevice、secondDevice列的查询需求

SQL Server 查询解决方案

你可以使用条件判断+聚合的方式实现行转列得到目标结果,假设你的原表名为device_tb,替换为实际表名即可使用以下语句:

SELECT
  Id,
  name,
  MAX(CASE WHEN isActive = 1 THEN device END) AS firstDevice,
  MAX(CASE WHEN isActive = 0 THEN device END) AS secondDevice
FROM device_tb
GROUP BY Id, name

逻辑说明

  • 首先通过CASE WHEN做分支判断:isActive为1时返回当前行的device值给firstDevice的临时结果,为0时返回给secondDevice的临时结果,不符合条件的位置默认返回NULL
  • 再通过MAX聚合函数合并同一个Id、name分组下的非空值,最终得到每个Id对应两条设备字段的完整记录
  • 如果每个Id、name组合下isActive=1和isActive=0的记录最多只有1条,用MIN替代MAX也可以得到相同结果

样例验证

如果你的原表存在以下两条数据:

IdnamedeviceisActive
1Motorolaphone1
1Motorolatablet0

执行上述查询后将得到你要求的输出:

IdnamefirstDevicesecondDevice
1Motorolaphonetablet

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:15:04