关于分组的一个小问题,在线等。。,请各位帮忙呀

sk2002 2003-10-16 02:36:51
为什么不是一个分组表达式呢,我想按照EGPCS_MV_DTL.MVID分组呀!相同的MVID分组求和?
select
sum("EGPCS_MV_DTL"."MVID"),
"EGPCS_MV_DTL"."GOODSQTY",
"EGPCS_MV_DTL"."MVPRICE",
"EGPCS_MV_V"."CREDATE",
"EGPCS_MV_V"."FROMPLACEPOINTID",
"EGPCS_MV_V"."FROMPLACEPOINTNAME",
"EGPCS_MV_V"."TOPLACEPOINTNAME"
from
EGPCS_MV_DTL,
EGPCS_MV_V
where
"EGPCS_MV_V"."CREDATE" between to_date(null) and to_date(null) and
"EGPCS_MV_DTL"."MVID" = "EGPCS_MV_V"."MVID"
group by
"EGPCS_MV_DTL"."MVID"
...全文
32 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2003-10-16
  • 打赏
  • 举报
回复
那就是搞定啦?
sk2002 2003-10-16
  • 打赏
  • 举报
回复
多谢各位的帮忙,谢谢!
fallstone 2003-10-16
  • 打赏
  • 举报
回复
看糊涂了,到底要按什么分组给什么求和?
zjcxc 元老 2003-10-16
  • 打赏
  • 举报
回复
楼主用的什么语言?

不是SQL的吧.
yujohny 2003-10-16
  • 打赏
  • 举报
回复
select sum(A.MVID),max(A.GOODSQTY),max(A.MVPRICE),
max(B.CREDATE), max(B.FROMPLACEPOINTID),
max(B.FROMPLACEPOINTNAME),max(B.TOPLACEPOINTNAME)
from EGPCS_MV_DTL A,EGPCS_MV_V B
where B.CREDATE between to_date(null) and to_date(null) and A.MVID = B.MVID
group by A.MVIDgroup by A.MVID
welyngj 2003-10-16
  • 打赏
  • 举报
回复
如果 ColumnA 是分组列,要引用 ColumnB 或 ColumnC,这两列必须能为 ColumnA 中的每个值返回单个值的聚合函数中的参数。选择列表中包含诸如 MAX (ColumnB)、SUM (ColumnC) 或 AVG (ColumnC) 之类的表达式是合法的:

SELECT ColumnA,
MAX(ColumnB) AS MaxB,
SUM(ColumnC) AS SumC
FROM TableX
GROUP BY ColumnA

该选择语句返回两行,为 ColumnA 中的每个唯一值各返回一行:

ColumnA MaxB SumC
----------- ---- -----------
1 ghi 18
2 mno 11

(2 row(s) affected)

但是,选择列表中只包含 ColumnB 表达式是不合法的:

SELECT ColumnA,
ColumnB,
SUM(ColumnC) AS SumC
FROM TableX
GROUP BY ColumnA

zarge 2003-10-16
  • 打赏
  • 举报
回复
select
"EGPCS_MV_DTL"."MVID"),
sum("EGPCS_MV_DTL"."GOODSQTY"),
sum("EGPCS_MV_DTL"."MVPRICE"),
Max("EGPCS_MV_V"."CREDATE"),
Max("EGPCS_MV_V"."FROMPLACEPOINTID"),
Max("EGPCS_MV_V"."FROMPLACEPOINTNAME"),
Max("EGPCS_MV_V"."TOPLACEPOINTNAME")
from
EGPCS_MV_DTL,
EGPCS_MV_V
where
"EGPCS_MV_V"."CREDATE" between to_date(null) and to_date(null) and
"EGPCS_MV_DTL"."MVID" = "EGPCS_MV_V"."MVID"
group by
"EGPCS_MV_DTL"."MVID"

sk2002 2003-10-16
  • 打赏
  • 举报
回复
还是不太明白,能给解释一下吗
welyngj 2003-10-16
  • 打赏
  • 举报
回复
error,不好意思!
GROUP BY 和 WHERE 子句
可以在包含 GROUP BY 子句的查询中使用 WHERE 子句。在进行任何分组之前,将消除不符合 WHERE 子句条件的行。例如:

USE pubs
SELECT type, AVG(price)
FROM titles
WHERE advance > $5000
GROUP BY type

下面是结果集:

type
------------ --------------------------
business 2.99
mod_cook 2.99
popular_comp 21.48
psychology 14.30
trad_cook 17.97

(5 row(s) affected)

只有预付款超过 $5,000 的行才包含在查询结果所显示的组中。

welyngj 2003-10-16
  • 打赏
  • 举报
回复
请看看这个example:
create table c
(a2 int,
b2 int
,c2 int)
insert into b values(1,2,4)
insert into b values(3,6,6)
insert into c values(1,5,7)
insert into c values(3,7,9)

update c set b2=b1,c2=c1 from b where b.a1=3 and c.a2=3
select * from c

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧