能不能用一个select直接搞定?

cutedelphigirl 2003-10-18 02:53:51
一个表aaa
有字段:code,number,mark (产品代码,销售或退货数量,标记)
0001 10 出货
0001 20 出货
0001 5 退货
0002 8 出货
0002 3 退货
我想得出实际销售数量:
0001 25
0002 5
...全文
19 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
vchoushen6 2003-10-21
  • 打赏
  • 举报
回复
select code,sum(sumber) as num from (
select code,number from aaa where mark='出货'
union all
select code,-number as number from aaa where mark='退货')
group by code
mib3000 2003-10-19
  • 打赏
  • 举报
回复
up
redcola 2003-10-19
  • 打赏
  • 举报
回复
mark
karach 2003-10-18
  • 打赏
  • 举报
回复
没有意义拉
csntgao 2003-10-18
  • 打赏
  • 举报
回复
zhoutian618(秦失其鹿,天下共逐,唯胜者得鹿而割之) !

你是个聪明的人,可惜这帮人连好歹都分不清楚的!
haoguozhong 2003-10-18
  • 打赏
  • 举报
回复
不管用什么方法,解决问题时关键!
popmailzjw 2003-10-18
  • 打赏
  • 举报
回复
要我就把出的数据用负数表示
说好不能打脸 2003-10-18
  • 打赏
  • 举报
回复
是我,就不会用SELECT。我用经典算法。
hongjg 2003-10-18
  • 打赏
  • 举报
回复
学习
Northwindrocker 2003-10-18
  • 打赏
  • 举报
回复
select code,(select sum(number) from aaa where mark='出货')-(select sum(number) from aaa where mark='退货') as 销售数量 from aaa group by code

推荐这个!简洁,其他的保证非空是库结构的事情!
noil0125 2003-10-18
  • 打赏
  • 举报
回复
sql server
SELECT a.code, SUM(a.number - b.number) AS SUM
FROM T a INNER JOIN
t b ON a.code = b.code
WHERE a.mark = '进货' AND b.mark = '退货'
GROUP BY a.code
hmily1688 2003-10-18
  • 打赏
  • 举报
回复
嘻嘻,答案出来了,我是来学习的
hiflower 2003-10-18
  • 打赏
  • 举报
回复
SELECT a.code, (a.suma-b.sumb) AS [number]
FROM [SELECT aaa.code, Sum(aaa.number) AS suma
FROM aaa
WHERE Mark='出货'
GROUP BY aaa.code]. AS a LEFT JOIN [select aaa.code,sum(aaa.number) as sumb
from aaa
where Mark='退货'
GROUP by aaa.code]. AS b ON a.code = b.code;
zhoutian618 2003-10-18
  • 打赏
  • 举报
回复
MSSQL代码如下:
select code,
[实际销售数量]=sum(case when mark='退货' then -isnull(number, 0)
else isnull(number, 0)
end
)
from [一个表aaa]
group by code
zhoutian618 2003-10-18
  • 打赏
  • 举报
回复
select code,
[实际销售数量]=sum(case when mark='退货' then -isnull(number, 0)
else isnull(number, 0)
end
)
from [一个表aaa]
group by code
cutedelphigirl 2003-10-18
  • 打赏
  • 举报
回复
我用ado+access
Frewin 2003-10-18
  • 打赏
  • 举报
回复
少了个end !!!!
哈哈,
正确的如下:
select code, sum(case mark when '出货' then number else -number end)
from tablename
group by code
Frewin 2003-10-18
  • 打赏
  • 举报
回复
select code, sum(case mark when '出货' then number else -number)
from tablename
group by code
//ok
superlionet 2003-10-18
  • 打赏
  • 举报
回复
声明: 这个语句我没试过.
superlionet 2003-10-18
  • 打赏
  • 举报
回复
select code,(select sum(number) from aaa where mark="出货'")-(select sum(number) from aaa where mark="退货'") as 销售数量 from aaa group by code
加载更多回复(1)

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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