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

如何在MS Access SQL中从一列按不同筛选生成两列?

解决方案:行转列实现需求

你的问题本质是行转列(将同一Product-code下不同Criteria的Value转为独立列),原SQL的核心问题是缺少聚合函数,导致会返回多条记录,同时JOIN语句存在语法错误(public_dosa.product_code) 多了一个右括号)。

方法1:使用聚合函数 + IIF(适用于Access等支持IIF的数据库)

通过GROUP BY按Product-code分组,用MAX(或SUM,如果同一Product-code+Criteria不会重复的话)聚合IIF的结果,就能把多行合并为一行:

SELECT 
    prp.[Product-code] AS Product_code,
    MAX(IIF(prp.Criteria = "Blue Grid", prp.Value, NULL)) AS [Blue Grid],
    MAX(IIF(prp.Criteria = "Red Grid", prp.Value, NULL)) AS [Red Grid]
FROM 
    public_report_product prp
INNER JOIN 
    public_dosa pd ON pd.product_code = prp.[Product-code]
WHERE 
    prp.Criteria IN ("Blue Grid", "Red Grid")
GROUP BY 
    prp.[Product-code];

说明:

  • MAX函数会筛选出每个分组下非NULL的Value(不符合条件的IIF返回NULL,MAX会忽略NULL)
  • GROUP BY prp.[Product-code]确保每个产品只返回一行
  • 修正了JOIN语句的语法错误,同时用表别名简化代码

方法2:使用PIVOT(适用于SQL Server、PostgreSQL等支持PIVOT的数据库)

如果你的数据库支持PIVOT语法,代码会更简洁:

SQL Server版本:

SELECT 
    Product_code,
    [Blue Grid],
    [Red Grid]
FROM (
    SELECT 
        prp.[Product-code] AS Product_code,
        prp.Criteria,
        prp.Value
    FROM public_report_product prp
    INNER JOIN public_dosa pd ON pd.product_code = prp.[Product-code]
    WHERE prp.Criteria IN ("Blue Grid", "Red Grid")
) AS SourceTable
PIVOT (
    MAX(Value)
    FOR Criteria IN ([Blue Grid], [Red Grid])
) AS PivotTable;

PostgreSQL版本(需先安装tablefunc扩展):

-- 先启用扩展
CREATE EXTENSION IF NOT EXISTS tablefunc;

SELECT 
    product_code,
    "Blue Grid",
    "Red Grid"
FROM crosstab(
    'SELECT prp."Product-code", prp.Criteria, prp.Value
     FROM public_report_product prp
     INNER JOIN public_dosa pd ON pd.product_code = prp."Product-code"
     WHERE prp.Criteria IN (''Blue Grid'', ''Red Grid'')
     ORDER BY 1,2',
    'VALUES (''Blue Grid''), (''Red Grid'')'
) AS ct(product_code VARCHAR, "Blue Grid" NUMERIC, "Red Grid" NUMERIC);

最终结果

执行上述任意方法后,都会得到你期望的输出:

Product-codeBlue GridRed Grid
1018414912.013.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:17:16