急 分组小问题

zhenshz 2011-10-14 10:25:22
我的表中有两个字段 一个是数量sl,一个是单价dj,一个员工yg 在表hh
要求 公司A3类和公司A0、A1、A2类中非仓库(xx)A、B类库存(ss)相加超25万(分4周,每周过渡2.5万,过渡至15万)的部分 在表yy

提示:要求通过分组统计后再比较
select b.yg,sum( b.sl*b.dj-250000-(case when datediff(day,'2011-10-9',GETDATE())<4 then 25000*datediff(day,'2011-10-9',GETDATE())
else 0 end ))as money
from hh a ,yy as b where a.dj=b.fcpp and b.yg=a.yg
and a.xx in('a0','a1','a2','a3') and a.ss not in('a','b')
group by b.yg

说是我这样做是按单分组不是按员工,哪里错了
...全文
122 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhenshz 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 geniuswjt 的回复:]
是吗,那你上测试数据10行左右吧,要么都是空谈,浪费大家时间

引用 10 楼 zhenshz 的回复:
引用 9 楼 geniuswjt 的回复:
SQL code


--try
select b.yg,
sum( b.sl*b.dj-250000-
(case when datediff(day,'2011-10-9',GETDATE())<4
then 25000*d……
[/Quote]

汗,我在怀疑你有没有看文字说明,需求不对,不是代码不对呀,大虾


geniuswjt 2011-10-14
  • 打赏
  • 举报
回复
是吗,那你上测试数据10行左右吧,要么都是空谈,浪费大家时间[Quote=引用 10 楼 zhenshz 的回复:]
引用 9 楼 geniuswjt 的回复:
SQL code


--try
select b.yg,
sum( b.sl*b.dj-250000-
(case when datediff(day,'2011-10-9',GETDATE())<4
then 25000*datediff(day,'2011-10-9',GETDATE())
else 0 end ))as mone……
[/Quote]
zhenshz 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 geniuswjt 的回复:]
SQL code


--try
select b.yg,
sum( b.sl*b.dj-250000-
(case when datediff(day,'2011-10-9',GETDATE())<4
then 25000*datediff(day,'2011-10-9',GETDATE())
else 0 end ))as money
from hh a ,yy as b ……
[/Quote]


不是这边的问题,这个和另一张表的字段是相等的
geniuswjt 2011-10-14
  • 打赏
  • 举报
回复

--try
select b.yg,
sum( b.sl*b.dj-250000-
(case when datediff(day,'2011-10-9',GETDATE())<4
then 25000*datediff(day,'2011-10-9',GETDATE())
else 0 end ))as money
from hh a ,yy as b where b.yg=a.yg
and a.xx in('a0','a1','a2','a3') and a.ss not in('a','b')
group by b.yg
[Quote=引用 8 楼 geniuswjt 的回复:]
select b.yg,sum( b.sl*b.dj-250000-(case when datediff(day,'2011-10-9',GETDATE())<4 then 25000*datediff(day,'2011-10-9',GETDATE())
else 0 end ))as money
from hh a ,yy as b where a.dj=b.fcpp and b.yg=……
[/Quote]
geniuswjt 2011-10-14
  • 打赏
  • 举报
回复
select b.yg,sum( b.sl*b.dj-250000-(case when datediff(day,'2011-10-9',GETDATE())<4 then 25000*datediff(day,'2011-10-9',GETDATE())
else 0 end ))as money
from hh a ,yy as b where a.dj=b.fcpp and b.yg=a.yg
and a.xx in('a0','a1','a2','a3') and a.ss not in('a','b')
group by b.yg

我看出来了,你把红色部分去掉就OK了,这样连接上单价就是按单了

zhenshz 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 roy_88 的回复:]
SQL code

select a.dj,
sum( b.sl*b.dj-250000-(case when datediff(day,'2011-10-9',GETDATE())<4 then 25000*datediff(day,'2011-10-9',GETDATE())
else 0 end ))as [money]
from hh a ,
yy as b where a.d……
[/Quote]

不是语法错误,而是结果错误,要求一定要按员工分组的,我那样写sum( b.sl*b.dj-250000-(case when datediff(day,'2011-10-9',GETDATE())<4 then 25000*datediff(day,'2011-10-9',GETDATE())
else 0 end ))as [money] 老大说我这样是按单,不是按员工,郁闷呀
中国风 2011-10-14
  • 打赏
  • 举报
回复
select a.dj,
sum( b.sl*b.dj-250000-(case when datediff(day,'2011-10-9',GETDATE())<4 then 25000*datediff(day,'2011-10-9',GETDATE())
else 0 end ))as [money]
from hh a ,
yy as b where a.dj=b.fcpp and b.yg=a.yg and a.xx in('a0','a1','a2','a3') and a.ss not in('a','b')
group by a.dj


改一下 group by
--小F-- 2011-10-14
  • 打赏
  • 举报
回复
select
b.yg,
sum( b.sl*b.dj-250000-(case when datediff(day,'2011-10-9',GETDATE())<4 then 25000*datediff(day,'2011-10-9',GETDATE()) else 0 end ))as [money]
from
hh a ,yy as b
where
a.dj=b.fcpp and b.yg=a.yg
and
a.xx in('a0','a1','a2','a3') and a.ss not in('a','b')
group by
b.yg
中国风 2011-10-14
  • 打赏
  • 举报
回复
b.yg--為員工?

那在 group by 別加上b.yg
中国风 2011-10-14
  • 打赏
  • 举报
回复
語法沒發現問題?有什麼錯誤
gw6328 2011-10-14
  • 打赏
  • 举报
回复
hh表是员工表?那应该要 group by hh.什么 也就是你的 a.xx吧
?
中国风 2011-10-14
  • 打赏
  • 举报
回复
select b.yg,
sum( b.sl*b.dj-250000-(case when datediff(day,'2011-10-9',GETDATE())<4 then 25000*datediff(day,'2011-10-9',GETDATE())
else 0 end ))as [money]
from hh a ,yy as b where a.dj=b.fcpp and b.yg=a.yg
and a.xx in('a0','a1','a2','a3') and a.ss not in('a','b')
group by b.yg
zhenshz 2011-10-14
  • 打赏
  • 举报
回复
50020 57198367975.5335
70030 277544278350.055
80044 110388113.0758
90067 7309929920.2548
50090 6498662402.072
20101 34823801185.8596
数据太多我随意的拿的,
我又想到了一个办法,不过不知道对不对



select b.yg,sum( b.sl*b.dj-250000-(case when datediff(day,'2011-10-9',GETDATE())<4 then 25000*datediff(day,'2011-10-9',GETDATE())
else 0 end ))as money
from hh a ,(select SUM(b.sl*b.dj) as aa,fccp,xh,yg from yy group by fccp,xh,yg) as b where a.dj=b.fcpp and b.yg=a.yg
and a.xx in('a0','a1','a2','a3') and a.ss not in('a','b')
group by b.yg

geniuswjt 2011-10-14
  • 打赏
  • 举报
回复
你把你发的测试数据应该得到的结果也码一下[Quote=引用 15 楼 zhenshz 的回复:]
引用 13 楼 gogodiy 的回复:
你直接给点数据,然后给出结果。不然没有数据,大家都是瞎猜。


表 hh
品牌 员工yg 数量sl 单价 dj
长虹 87667 93 13712310.1403
美的 77667 770 73116020.5694
美的 27667 59 90369431.8559
长虹 40156 155 87533464.060……
[/Quote]
zhenshz 2011-10-14
  • 打赏
  • 举报
回复
打太快了,结果我也不清楚,就是需要按照要求去做的,谢谢提示
zhenshz 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 gogodiy 的回复:]
你直接给点数据,然后给出结果。不然没有数据,大家都是瞎猜。
[/Quote]

表 hh
品牌 员工yg 数量sl 单价 dj
长虹 87667 93 13712310.1403
美的 77667 770 73116020.5694
美的 27667 59 90369431.8559
长虹 40156 155 87533464.0609
美的 57465 160 40004731.3616
长虹 26028 175 82569350.1313
长虹 81011 522 7204969.7497
美的 51011 410 86841165.7787
长虹 91011 367 79261034.2798
长虹 81011 882 90227994.8729
美的 26113 17 21590100.0256


表 yy

长虹 A1 A2
美的 A1 A2
长虹 A1 A3
长虹 A1 A3
美的 A1 B
长虹 A1 B
美的 B E
长虹 B E
美的 B E
这是两张表
要得出的结果我也清楚,就是需要按照要求去做的
geniuswjt 2011-10-14
  • 打赏
  • 举报
回复
亲,您真搞笑[Quote=引用 12 楼 zhenshz 的回复:]
引用 11 楼 geniuswjt 的回复:
是吗,那你上测试数据10行左右吧,要么都是空谈,浪费大家时间

引用 10 楼 zhenshz 的回复:
引用 9 楼 geniuswjt 的回复:
SQL code


--try
select b.yg,
sum( b.sl*b.dj-250000-
(case when datediff(day,'2011-10-9',GE……
[/Quote]
gogodiy 2011-10-14
  • 打赏
  • 举报
回复
你直接给点数据,然后给出结果。不然没有数据,大家都是瞎猜。

34,590

社区成员

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

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