asp.net中二个表如何写下面的SQL语句啊?请高手指点一下

mychinabc 2007-03-07 08:38:14
请各位大侠指点一下,如何办啊?
表type

id 物品
1 足球
2 蓝球
3 羽毛球


表detail

id 物品 数量 状态
1 足球 50 入库
2 蓝球 30 买出
3 足球 14 买出
4 羽毛球 45 入库
5 蓝球 10 买出
6 足球 25 买出

如何写出统计现有数据的SQL语句呢?
物品 总数 现有库存 买出数量
足球 50 11 39
蓝球 -40 0 40
羽毛球 45 45 0
-------------------------------
本人想用asp.net写出,大家能给出思路吗?
...全文
235 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangkun9999 2007-03-07
  • 打赏
  • 举报
回复
当然,引入type表可能会更准确些,防止那些在detil表中不存在的数据类型:

SELECT type.物品,sum(case detail.状态 when '买出' then 0 else detail.数量 end) as 总数,sum(case detail.状态 when '买出' then -detail.数量 else detail.数量 end) as 现有库存,sum(case detail.状态 when '入库' then 0 else detail.数量 end) as 买出数量
FROM detail right OUTER JOIN type on type.物品=detail.物品 group by type.物品
zhuangjunx 2007-03-07
  • 打赏
  • 举报
回复
up
hrboldguo 2007-03-07
  • 打赏
  • 举报
回复
先group by 一下取得数据,然后再纵表转成横表,select 总数 case when 状态='入库' then count(入库) else 状态='买出' count(买出) from 你的group by的表,sql server具体怎么 写的还是查一下帮助!
wangkun9999 2007-03-07
  • 打赏
  • 举报
回复
哟,写错了下,改正:

SELECT 物品,sum(case 状态 when '买出' then 0 else 数量 end) as 总数,sum(case 状态 when '买出' then -数量 else 数量 end) as 现有库存,sum(case 状态 when '入库' then 0 else 数量 end) as 买出数量
FROM detail group by 物品
wangkun9999 2007-03-07
  • 打赏
  • 举报
回复
只用一个表detail, 一条sql语句就搞定了:

SELECT 物品,状态,sum(case 状态 when '买出' then 0 else 数量 end) as 总数,sum(case 状态 when '买出' then -数量 else 数量 end) as 现有库存,sum(case 状态 when '入库' then 0 else 数量 end) as 买出数量
FROM detail group by 物品,状态

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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