如何在连接中使用clouse组 [英] How to use group by clouse in joins

查看:93
本文介绍了如何在连接中使用clouse组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

SELECT        tb_Ticket.TicketName, tb_Sales.DateDraw, tb_UserManagement.UserName, 
tb_Sales.BillNo, tb_PrizeNumbers.PrizePosition, tb_PrizeNumbers.PrizeNo, 
                         tb_PrizeDetails.Stockist, tb_PrizeDetails.Substockist, tb_PrizeDetails.Agent
FROM            tb_Bill INNER JOIN
                         tb_PrizeDetails INNER JOIN
                         tb_LotteryPrizeDetails ON tb_PrizeDetails.TID = tb_LotteryPrizeDetails.TID INNER JOIN
                         tb_PrizeNumbers ON tb_LotteryPrizeDetails.TID = tb_PrizeNumbers.TID ON 
                         tb_Bill.SerialNo = tb_PrizeNumbers.PrizeNo CROSS JOIN
                         tb_Ticket INNER JOIN
                         tb_Sales ON tb_Ticket.TicketID = tb_Sales.TicketID INNER JOIN
                         tb_UserManagement ON tb_Sales.UserID = tb_UserManagement.UserID INNER JOIN
                         tb_WinningTable ON tb_Ticket.TicketID = tb_WinningTable.TicketID GROUP BY tb_Bill.BillNo





列'tb_Ticket.TicketName'在选择列表中无效,因为它不包含在eith中一个聚合函数或GROUP BY子句。



这是错误显示..帮我plzzzzzzzzzz



我尝试过:





Column 'tb_Ticket.TicketName' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

this is the error showing.. help me plzzzzzzzzzz

What I have tried:

SELECT        tb_Ticket.TicketName, tb_Sales.DateDraw, tb_UserManagement.UserName, 
tb_Sales.BillNo, tb_PrizeNumbers.PrizePosition, tb_PrizeNumbers.PrizeNo, 
                         tb_PrizeDetails.Stockist, tb_PrizeDetails.Substockist, tb_PrizeDetails.Agent
FROM            tb_Bill INNER JOIN
                         tb_PrizeDetails INNER JOIN
                         tb_LotteryPrizeDetails ON tb_PrizeDetails.TID = tb_LotteryPrizeDetails.TID INNER JOIN
                         tb_PrizeNumbers ON tb_LotteryPrizeDetails.TID = tb_PrizeNumbers.TID ON 
                         tb_Bill.SerialNo = tb_PrizeNumbers.PrizeNo CROSS JOIN
                         tb_Ticket INNER JOIN
                         tb_Sales ON tb_Ticket.TicketID = tb_Sales.TicketID INNER JOIN
                         tb_UserManagement ON tb_Sales.UserID = tb_UserManagement.UserID INNER JOIN
                         tb_WinningTable ON tb_Ticket.TicketID = tb_WinningTable.TicketID GROUP BY tb_Bill.BillNo





列'tb_Ticket。 TicketName'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。



这是错误显示..帮助我plzzzzzzzzzz



Column 'tb_Ticket.TicketName' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

this is the error showing.. help me plzzzzzzzzzz

推荐答案

GROUP BY子句将一系列行折叠为具有相同值的单个行 - 并且您只能直接返回这些相同的值 - 所有其他列来自行组只能作为聚合值返回 - SUM,AVERAGE等。

所以如果你有三行

A GROUP BY clause "collapses" a range of rows into a single row with identical values - and you can only return those identical values directly - all other columns from the group of rows can only be returned as an aggregate value - the SUM, the AVERAGE, and so on.
So if you have three rows
ID   Date        Sales
1    2016-01-02  100
2    2016-01-02  200
3    2016-01-02  300
4    2016-01-03  400
5    2016-01-03  500
6    2016-01-03  600

你是GROUP BY日期,那么你不能直接返回Sales值,因为SQL没有知道返回哪一行值n:

And you GROUP BY Date, then you can't return the Sales value directly because SQL doesn't know which row value to return:

SELECT Date, Sales FROM MyTable GROUP BY Date




Date        Sales
2016-01-02  ??? Should this be 100, 200, or 300?
2016-01-03  ??? Should this be 400, 500, or 600?

您可以返回一个聚合值:

You can return an aggregate value though:

SELECT Date, SUM(Sales) FROM MyTable GROUP BY Date




Date        Sales
2016-01-02  600
2016-01-03  1500



您正在尝试返回值不一定是单行值,因为你是GROUP BY BillNo所以SQL抱怨。

你需要确切地计算你的数据是什么样的,以及你需要返回什么 - 我们可以帮助你,因为我们不知道你的数据是什么,更不用说你想要选择的了!


You are trying to return values which aren't necessarily a single row value because you GROUP BY BillNo so SQL complains.
You need to work out exactly what your data looks like, and what you need to return - and we can;t help you with that, because we have no idea what your data is, much less what you want to select!


这篇关于如何在连接中使用clouse组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆