求sql语句

jinjin417202 2012-08-07 01:55:22
已知:
商品编号 定价 出库数
A 2 10
A 3 10
A 4 5
B 1 20
B 2 10

商品编号 销售数
A 15
B 5

求:
商品编号 定价 出库数 销售数
A 2 10 10
A 3 10 5
A 4 5 0
B 1 20 5
B 2 10 0
...全文
73 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cometing 2012-08-08
  • 打赏
  • 举报
回复
销售数怎么拆啊。。
jinjin417202 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

SQL code
if object_id('[TBA]') is not null drop table [TBA]
go
create table [TBA] (商品编号 nvarchar(2),定价 int,出库数 int)
insert into [TBA]
select 'A',2,10 union all
select 'A',3,10 union all
select 'A',4……
[/Quote]
谢谢!
Mr_Nice 2012-08-07
  • 打赏
  • 举报
回复
if object_id('[TBA]') is not null drop table [TBA]
go
create table [TBA] (商品编号 nvarchar(2),定价 int,出库数 int)
insert into [TBA]
select 'A',2,10 union all
select 'A',3,10 union all
select 'A',4,5 union all
select 'B',1,20 union all
select 'B',2,10

if object_id('[TBB]') is not null drop table [TBB]
go
create table [TBB] (商品编号 nvarchar(2),销售数 int)
insert into [TBB]
select 'A',15 union all
select 'B',5

select * from [TBA]
select * from [TBB]



WITH T AS ( SELECT TBA.* ,
数量 = TBB.销售数 - ( SELECT SUM(出库数)
FROM TBA A
WHERE A.商品编号 = TBA.商品编号
AND A.定价 <= TBA.定价
)
FROM TBA
INNER JOIN TBB ON TBA.商品编号 = TBB.商品编号
),
T2
AS ( SELECT * ,
CASE WHEN 数量 > 0 THEN 出库数
WHEN 数量 < 0 THEN 数量 + 出库数
END AS 销售数
FROM T
)

SELECT 商品编号 ,
定价 ,
出库数 ,
CASE WHEN 销售数 < 0 THEN 0
ELSE 销售数
END AS 销售数
FROM T2


/*
商品编号 定价 出库数 销售数
A 2 10 10
A 3 10 5
A 4 5 0
B 1 20 5
B 2 10 0*/
  • 打赏
  • 举报
回复
LZ结果中那个销售数据是怎么分配的,不会是按定价吧?
jinjin417202 2012-08-07
  • 打赏
  • 举报
回复
现实就是这种情况,如果是楼上的,会怎么设计表呢?
shoppo0505 2012-08-07
  • 打赏
  • 举报
回复
类似的这种表格设计不太符合规范。
比如楼主的这个,出售的15个A商品,你不能正确的表示,哪个价位的出售了几个。现实生活中常会出现这样的情况,但是涉及到数据库设计,这个其实是不规范的。

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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