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

如何编写SQL Server查询,按条件将数据分列为同一行的两列?

解决方案:将主图与Logo图合并到同一行展示

针对你的需求,我们可以通过条件聚合的方式来实现,这种方法简单直观,非常适合每个位置仅有一个主图和一个Logo的场景:

SELECT
    location,
    MAX(CASE WHEN IsMainImage = 'True' THEN filename END) AS filename1,
    MAX(CASE WHEN IsLogo = 'True' THEN filename END) AS filename2
FROM
    YourTableName
GROUP BY
    location;

代码解释:

  • CASE WHEN 语句会根据指定条件筛选对应类型的图片文件名:当IsMainImage为True时,返回该记录的filename作为filename1;当IsLogo为True时,返回对应filename作为filename2。
  • MAX() 聚合函数在这里的作用是确保每个location只返回唯一的主图和Logo值(因为每个位置只会有一个主图和一个Logo,MAX不会改变结果,只是配合GROUP BY完成聚合逻辑)。
  • GROUP BY location 保证同一位置的所有记录会被合并到同一行输出。

如果你更倾向于使用SQL Server的PIVOT语法,也可以用下面的写法,效果完全一致:

SELECT
    location,
    [True] AS filename1,
    [True_Logo] AS filename2
FROM (
    SELECT
        location,
        filename,
        CASE 
            WHEN IsMainImage = 'True' THEN 'True'
            WHEN IsLogo = 'True' THEN 'True_Logo'
        END AS ImageType
    FROM YourTableName
    WHERE IsMainImage = 'True' OR IsLogo = 'True'
) AS SourceTable
PIVOT (
    MAX(filename)
    FOR ImageType IN ([True], [True_Logo])
) AS PivotTable;

注意事项:

  • 记得把查询中的YourTableName替换成你的实际表名。
  • 如果你的IsMainImage和IsLogo是bit类型(存储0/1),只需要把条件改成IsMainImage = 1和IsLogo = 1即可。
  • 这两种写法的输出格式完全符合你的要求,可以直接在SSIS包中使用,不会影响现有调用流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:32:42