Sql &引用;每个GROUP BY表达式必须至少包含一个非外部引用的列;加上;分组集“;
我有下面的SQL查询,我的目标是做一个小计和一个一般的tota,按产品对小计进行分组,但我的问题是,如果我只使用“group by”,他将不得不添加“select”的所有字段,结果将不是所需的。所以我尝试使用“分组集”,但它给出了以下错误 “每个GROUP BY表达式必须至少包含一个非外部引用的列” 是否有人能解决上述问题,或者只能按产品分组Sql &引用;每个GROUP BY表达式必须至少包含一个非外部引用的列;加上;分组集“;,sql,sql-server,select,grouping-sets,Sql,Sql Server,Select,Grouping Sets,我有下面的SQL查询,我的目标是做一个小计和一个一般的tota,按产品对小计进行分组,但我的问题是,如果我只使用“group by”,他将不得不添加“select”的所有字段,结果将不是所需的。所以我尝试使用“分组集”,但它给出了以下错误 “每个GROUP BY表达式必须至少包含一个非外部引用的列” 是否有人能解决上述问题,或者只能按产品分组 SELECT p.id_product, p.name, dd.name , isnull(p.internal cod
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
我刚开始使用
分组集
子句在分组依据
中不允许使用空
,因为它是一个常量。您需要空括号:
GROUP BY GROUPING SETS( (p.id_product, p.name),
(dd.name),
(p.internal_code),
(d.id_division, d.name),
()
)
是否可以只按产品或其他东西进行分组?