2013-11-04 89 views
-3

這是我的SQL Server查詢。當我執行此查詢,Group by是給我一個錯誤GROUP BY語句不起作用

消息8120,級別16,狀態1,行1
列「master_order.order_id」在選擇列表中無效,因爲它不包含在任一個聚合函數或GROUP BY子句。

我的關係表,但他沒有找到爲什麼如果無法通過其工作

SELECT  
    master_order.order_id, master_order.order_no, article_order.article_name, 
    size.size_name, transaction_order.quantity, transaction_order.unit_name, 
    transaction_order.rate, transaction_order.amount, transaction_order.discount, 
    transaction_order.net_amount, master_order.order_date, buyer.buyer_name, 
    master_order.shipment_date, bank.bank_name, bank.bank_branch, bank.account_title, 
    master_order.confirmation_date, payment.payment_terms, agent.agent_name, 
    agent.company_name, currency.currency_symbol, master_order.half_day, 
    master_order.half_date, master_order.shipped_board_date, master_order.port_category, 
    port_info_setup.port_name, port_info_setup.country_name, master_order.revised, 
    master_order.confirmed, master_order.ex_factory, master_order.comments, 
    master_order.dis_type 
FROM 
    master_order 
INNER JOIN 
    transaction_order ON master_order.order_id = transaction_order.order_id 
INNER JOIN 
    size ON transaction_order.size_id = size.size_id 
INNER JOIN 
    article_order ON transaction_order.article_id = article_order.article_id 
INNER JOIN 
    buyer ON master_order.buyer_id = buyer.buyer_id 
INNER JOIN 
    port_info_setup ON master_order.port_id = port_info_setup.port_id 
INNER JOIN 
    payment ON master_order.payment_id = payment.payment_id 
INNER JOIN 
    currency ON master_order.currency_id = currency.currency_id 
INNER JOIN 
    bank ON master_order.bank_id = bank.bank_id AND buyer.buyer_id = bank.buyer_id 
INNER JOIN 
    agent ON master_order.agent_id = agent.agent_id 
GROUP BY 
    size.size_name 
+3

這是一個令人難以置信的常見錯誤,它是'GROUP BY'意味着什麼的基礎:'GROUP BY size.size_name'意思是「對於size.size_name'的每個不同值只輸出一行數據庫應該如何選擇,對於所有其他需要選擇的列,在每一行中輸出哪個值? – IMSoP

+0

如果一個訂單具有多個尺寸並且尺寸相同,那麼相同的尺寸將被組合並顯示 – user2491383

+0

快速示例:master_order 1的尺寸爲S和L ; master_order 2的大小爲S,M和L; master_order 3的大小爲M和L. GROUP BY的大小意味着我們有一行S,一行M,L一行; S行值應該master_order有,1或2?數據庫無法選擇,所以它告訴你,你的查詢不能被回答。 – IMSoP

回答

0

使用組中的分組查詢醚你列在選擇列表中應該是一個聚合函數或列中沒有集合應該在集團聲明中提及。 如果您想要一個沒有聚合的列,並且不想按該列進行分組,請使用CTE進行分組,並使用連接在查詢結果中使用該列。