Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql &引用;每个GROUP BY表达式必须至少包含一个非外部引用的列;加上;分组集“;_Sql_Sql Server_Select_Grouping Sets - Fatal编程技术网

Sql &引用;每个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

我有下面的SQL查询,我的目标是做一个小计和一个一般的tota,按产品对小计进行分组,但我的问题是,如果我只使用“group by”,他将不得不添加“select”的所有字段,结果将不是所需的。所以我尝试使用“分组集”,但它给出了以下错误

“每个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

我刚开始使用
分组集
子句

分组依据
中不允许使用空
,因为它是一个常量。您需要空括号:

GROUP BY GROUPING SETS( (p.id_product, p.name), 
                        (dd.name),
                        (p.internal_code),
                        (d.id_division, d.name),
                        ()
                      )

是否可以只按产品或其他东西进行分组?