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

ASP.NET WebForm(VB.NET+SQL)中GridView仅按LPR_NO分组的问题

解决方案:仅按LPR_NO分组的SQL实现

首先明确:SQL标准(以及多数数据库的默认配置)要求,SELECT语句中未使用聚合函数的字段必须全部包含在GROUP BY子句中,这就是你报错的原因。要实现仅按LPR_NO分组,需根据你对其他字段的展示需求选择以下方案:

方案1:取每个LPR_NO的第一条记录(适合只需展示单条样本的场景)

使用窗口函数ROW_NUMBER()为每个LPR_NO分组内的记录编号,筛选出编号为1的记录,无需将所有字段加入GROUP BY:

WITH RankedION AS (
    SELECT 
        LP_ION.Originator, LP_ION.Originator_ID, LPR_No,  
        Product, LP_ION.AU, LP_ION.Qty_Req, 
        LP_ION.Qty_Issue, LP_ION.Qty_NA, LP_ION.Status AS ION_Status,
        -- 按LPR_NO分区,可按需调整排序规则(示例用Originator_ID排序)
        ROW_NUMBER() OVER (PARTITION BY LPR_No ORDER BY LP_ION.Originator_ID) AS RowNum
    FROM 
        LP_ION
)
SELECT 
    Originator, Originator_ID, LPR_No,  
    Product, AU, Qty_Req, 
    Qty_Issue, Qty_NA, ION_Status
FROM RankedION
WHERE RowNum = 1;

注:ORDER BY子句可根据业务需求修改,比如按记录创建时间排序,确保取到你需要的那条数据。

方案2:对其他字段进行聚合(适合需要统计/合并数据的场景)

如果需要对数值字段求和、文本字段合并,使用聚合函数处理非分组字段:

SELECT 
    LPR_No,
    -- 用MAX()取任意一个Originator值,或按需选择其他聚合逻辑
    MAX(LP_ION.Originator) AS Originator,
    MAX(LP_ION.Originator_ID) AS Originator_ID,
    -- 合并Product为逗号分隔字符串(SQL Server 2017+支持STRING_AGG)
    STRING_AGG(Product, ', ') AS Products,
    MAX(LP_ION.AU) AS AU,
    SUM(LP_ION.Qty_Req) AS Total_Qty_Req,
    SUM(LP_ION.Qty_Issue) AS Total_Qty_Issue,
    SUM(LP_ION.Qty_NA) AS Total_Qty_NA,
    MAX(LP_ION.Status) AS ION_Status
FROM 
    LP_ION
GROUP BY 
    LPR_NO;

根据业务需求选择聚合函数:数值型字段用SUM()/AVG(),文本型用STRING_AGG()/MAX()等。

方案3:关闭严格分组校验(不推荐)

如果使用SQL Server,可临时关闭ONLY_FULL_GROUP_BY配置,但这种方式会返回不确定的结果(数据库随机选择非分组字段的值),仅适合临时测试:

SET ANSI_WARNINGS OFF;
SET NOCOUNT ON;

SELECT 
    LP_ION.Originator, LP_ION.Originator_ID, LPR_No,  
    Product, LP_ION.AU, LP_ION.Qty_Req, 
    LP_ION.Qty_Issue, LP_ION.Qty_NA, LP_ION.Status AS ION_Status    
FROM 
    LP_ION 
GROUP BY 
    LPR_NO;

强烈不推荐在生产环境使用,返回的非分组字段值不可控。

将上述查询的结果集直接绑定到GridView即可,无需额外修改控件的分组配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:15:19