0

我有以下 SQL 查询,我的目标是制作小计和一般总计,按产品对小计进行分组,但我的问题是,如果我只使用“分组依据”,他将不得不添加“选择”,结果不会是想要的。所以我尝试使用“分组集”,但它给出了以下错误

“每个 GROUP BY 表达式必须包含至少一列不是外部引用”

任何人都可以解决上述问题或只能按产品分组吗?

SELECT 
    p.id_product,
    p.name,
    dd.name ,
    isnull(p.internal code, '------'),
    {fn CONCAT(CAST(d.id_division AS varchar), {fn CONCAT(' - ', d.name)}) },
    sum(vs.value1),
    sum(p.value2),
    sum(p.value2 * vs.value1)
FROM product p
    LEFT JOIN division d on d.id_division  = p.id_division
    LEFT JOIN division2 dd on dd.id_product = p.id_product
    LEFT JOIN value_stockroom vs on vs.id_product = p.id_product and vs.id_division2 = dd.id_division2
GROUP BY
    GROUPING SETS((p.id_product, p.name), (dd.name), (p.internal_code), (d.id_division, d.name), NULL)
ORDER BY 
    p.name, p.id_product, d.name

我是新使用的Grouping set子句

4

1 回答 1

0

NULL不允许进入,GROUP BY因为它是一个常数。你想要空括号:

GROUP BY GROUPING SETS( (p.id_product, p.name), 
                        (dd.name),
                        (p.internal_code),
                        (d.id_division, d.name),
                        ()
                      )
于 2020-01-24T13:16:11.127 回答