首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL分组查询

SQL分组查询
EN

Stack Overflow用户
提问于 2011-12-19 17:55:30
回答 3查看 261关注 0票数 0

我有一个运行良好的sql查询,但它返回来自两个不同表的结果,这些表包含合同及其所属项目的细目。

其中一个例子是:合同编号12004包含项目12004C、12004D、12004F。

有什么办法可以让我所有的12004组合在12004横幅合同号码下吗?

目前,我的查询是:

代码语言:javascript
复制
SELECT     PA01201.PACONTNUMBER, PA01201.PAPROJNUMBER, PA01201.PAprojname, PA01100.PAcontname
FROM         PA01201 INNER JOIN
             PA01100 ON PA01201.PACONTNUMBER = PA01100.PACONTNUMBER

基本上,我试图从PAPROJNUMBERS (C,D,F等)中得到所有的数字,在PACONTNUMBER下形成一个小计的一行

我尝试过“Group”,但得到了一个模糊的列名‘PACONTNUMBER’?

任何帮助都非常感谢。

谢谢你的帮助。非常感谢。我会继续尝试不同的东西。

作为对使用聚合的回应,这并不是我想要做的。

基本上,在我的项目12004C,12004D,12004F等的例子中,我只想让它们全部结束在12004以下。所以看起来会是这样的.

合约数字说明:-

代码语言:javascript
复制
12004    25000  SS Bus Station
12005    xxxxx  xxxxxxxx
12006    xxxxx  xxxxxxxx
12007    xxxxx  xxxxxxxx
12008    xxxxx  xxxxxxxx

而不是现在的样子:-

合同数字说明

代码语言:javascript
复制
12004     6000  SS Bus Station
12004C 8000     SS Bus Station
12004D 1000 SS Bus Station
12004F 10000    SS Bus Station
12005   xxxxx   xxxxxx
EN

回答 3

Stack Overflow用户

发布于 2011-12-19 17:59:35

如果您收到关于一个模糊名称的警告,这是因为您提到了多个表中的一个列,而数据库不知道您指的是哪个表。

尽管如此,根据您所拥有的数据库引擎(SQLServer、MySQL、Oracle),有些有一个用于聚合的"concat“函数。

票数 0
EN

Stack Overflow用户

发布于 2011-12-19 18:06:01

如果你想列出一份包含所有项目的合同,你必须按照你已经做好的方式去做。结果如下:

代码语言:javascript
复制
contract1 project1
contract1 project2

不能使用聚合来获取

代码语言:javascript
复制
contract1
           project1
           project2

话虽如此,你的不明确错误是因为你需要写

代码语言:javascript
复制
GROUP BY PA01201.PACONTNUMBER

而不是

代码语言:javascript
复制
GROUP BY PACONTNUMBER

它仍然会抱怨所有其他列都不属于聚合函数(例如MAX、COUNT、AVG、Min.min)。

票数 0
EN

Stack Overflow用户

发布于 2011-12-20 12:17:14

代码语言:javascript
复制
SELECT     min(PA01201.PACONTNUMBER) as minPAContNumber, 
           sum(cast(PA01201.PAPROJNUMBER as int)) as SUMPaProjNumber, 
               PA01201.PAprojname
FROM         PA01201 
INNER JOIN PA01100 
  ON PA01201.PACONTNUMBER = PA01100.PACONTNUMBER
GROUP BY PA01201.PAprojname

我假设paprojnumber是一个数字字段,因为您的示例正在对其进行数学计算。

不能将add0 PA01100.PACONTNUMBER返回到select或group,因为它将创建要避免的单独行;除非使用wm_Concat或类似的函数将所有不同的项目聚集到同一行/列中

根据预期结果和评论更新:

代码语言:javascript
复制
12004   25000  SS Bus Station
12005   xxxxx   xxxxxx

由于paprojnumber包含的数据(如0612AB )不能作为一个数字来处理,因此,当我们试图将数据卷到一行中时,DBengine不能将0612AB添加到其他结果中。

或者这些结果可以吗?

代码语言:javascript
复制
12004  |8000, 6000, 1000, 10000  | SS BUS STATION
12005  |9000AB, 6000, 2000, 4000 | SS BUS STATION
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8565362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档