0

我收到以下错误消息:

消息 8120,级别 16,状态 1,第 1 行列“customers.member_category”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。如果语句包含 UNION、INTERSECT 或 EXCEPT 运算符,则消息 104、级别 16、状态 1、行 1 ORDER BY 项必须出现在选择列表中。

如何按案例排序结果?

谢谢

SELECT
Date,
order_id,
member_category,
COUNT(*) AS no_items, 
SUM(item_amount) AS total_amount
FROM 
order_items OI (NOLOCK) JOIN customers C (NOLOCK) 
ON OI.CUSTOMER_NO = C.CUSTOMER_NO
WHERE 
DATE = '01 FEB 2014'
GROUP BY 
order_id, 
member_category
UNION
SELECT
    '',
    '',
'Total',
COUNT(*) AS no_items, 
SUM(item_amount) AS total_amount
FROM 
order_items OI (NOLOCK) JOIN customers C (NOLOCK) 
ON OI.CUSTOMER_NO = C.CUSTOMER_NO
WHERE 
DATE = '01 FEB 2014'
GROUP BY Date WITH ROLLUP
ORDER BY Date ASC, CASE member_category WHEN 'VIP' THEN 1
                    WHEN 'STD' THEN 2                   
                    WHEN 'GLD' THEN 3 
           END                                
4

1 回答 1

0

您声明的第二部分UNION不包含 field member_category。这违反UNION了每个语句中列的数量和顺序应该相同的基本原则。

要解决此问题,您需要member_category在检索到的列列表和GROUP BY子句中都添加。

于 2014-03-21T01:36:43.310 回答