这个sql语句怎么写?

liu_ff123 2007-05-12 05:17:22
1.有表A,结构如下:
A: p_ID p_Num s_id
1 10 01
1 12 02
2 8 01
3 11 01
3 8 03
其中:p_ID为产品ID,p_Num为产品库存量,s_id为仓库ID。请用SQL语句实现将上表中的数据合并,合并后的数据为:
p_ID s1_id s2_id s3_id
1 10 12 0
2 8 0 0
3 11 0 8
其中:s1_id为仓库1的库存量,s2_id为仓库2的库存量,s3_id为仓库3的库存量。如果该产品在某仓库中无库存量,那么就是0代替。
...全文
205 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
soonsnipe 2007-05-12
  • 打赏
  • 举报
回复
select p_id,
s1_id=sum(case when s_id=1 then p_num else 0 end),
s2_id=sum(case when s_id=2 then p_num else 0 end),
s3_id=sum(case when s_id=3 then p_num else 0 end)
from A group by p_id
order by p_id

/* 查询结果
p_id s1_id s2_id s3_id
----------- ----------- ----------- -----------
1 10 12 0
2 8 0 0
3 11 0 8

(所影响的行数为 3 行)
*/
smile9961 2007-05-12
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
set @sql = 'select p_Id'

select @sql = @sql +', sum(case s_id when ''' + s_id + ''' then p_num else 0 end) as [' + s_id + ']'
from (select distinct s_id from A) x

set @sql = @sql + ' from A group by p_Id order by p_Id'

exec (@sql)
sibyle 2007-05-12
  • 打赏
  • 举报
回复
铃响了 帮你顶一下 回家鸟
trainli 2007-05-12
  • 打赏
  • 举报
回复
留著﹐有空看一下﹐下班﹗
liu_ff123 2007-05-12
  • 打赏
  • 举报
回复
有一个表A ,当你查询输出的数据时按照下面表的方式
这个输出的sql 语句怎么写
vbman2003 2007-05-12
  • 打赏
  • 举报
回复
这个用case写就可以了,要下班了,没时间了
vbman2003 2007-05-12
  • 打赏
  • 举报
回复
不管用什么数据库,至少你应该还要有一张仓库信息相关表
liu_ff123 2007-05-12
  • 打赏
  • 举报
回复
mssql2000
vbman2003 2007-05-12
  • 打赏
  • 举报
回复
什么数据库?

62,025

社区成员

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

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

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

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