求一条SQL语句

苦逼的程序员 2011-12-19 11:11:01
比如
名称 数量
A 1
A 2
A 3
B 1
B 2
B 3
我想SQL里面加一列 算法是 本行数量/同一名称的总数量
如 显示成
A 1 1/6
A 2 2/6
A 3 3/6
B 1 1/6
B 2 2/6
B 3 3/6
因为这SQL是统计库存,我要求每行的在本类中的库存占比
...全文
52 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
美到心痛 2011-12-20
  • 打赏
  • 举报
回复

create table [tb]([名称] varchar(1),[数量] int)
insert [tb]
select 'A',1 union all
select 'A',2 union all
select 'A',3 union all
select 'B',1 union all
select 'B',2 union all
select 'B',3


select *,
cast(数量 as varchar(10))+'/'+cast((SELECT SUM(数量) FROM tb WHERE 名称=A.名称) as varchar(10))
from tb as a

/*
A 1 1/6
A 2 2/6
A 3 3/6
B 1 1/6
B 2 2/6
B 3 3/6
*/
叶子 2011-12-19
  • 打赏
  • 举报
回复

declare @T table (名称 varchar(1),数量 int)
insert into @T
select 'A',1 union all
select 'A',2 union all
select 'A',3 union all
select 'B',1 union all
select 'B',2 union all
select 'B',3

select *,
新列=LTRIM(数量)+'/'+LTRIM((SELECT SUM(数量) FROM @t WHERE 名称=A.名称))
from @T a
/*
名称 数量 新列
---- ----------- -------------------------
A 1 1/6
A 2 2/6
A 3 3/6
B 1 1/6
B 2 2/6
B 3 3/6
*/
苦逼的程序员 2011-12-19
  • 打赏
  • 举报
回复
谢谢 小F 姐姐 一会给你分哈 ~~ 时间没过
--小F-- 2011-12-19
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author :fredrickhu(小F,向高手学习)
-- Date :2011-12-19 23:16:45
-- Version:
-- Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Enterprise Evaluation Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([名称] varchar(1),[数量] int)
insert [tb]
select 'A',1 union all
select 'A',2 union all
select 'A',3 union all
select 'B',1 union all
select 'B',2 union all
select 'B',3
--------------开始查询--------------------------
select *,数量*1.0/(select sum(数量) from tb where 名称=t.名称) from tb t

----------------结果----------------------------
/* 名称 数量
---- ----------- ---------------------------------------
A 1 0.166666666666
A 2 0.333333333333
A 3 0.500000000000
B 1 0.166666666666
B 2 0.333333333333
B 3 0.500000000000


*/
苦逼的程序员 2011-12-19
  • 打赏
  • 举报
回复
自己写出来了 谢谢大家 散分
--小F-- 2011-12-19
  • 打赏
  • 举报
回复
select *,数量*1.0/(select sum(数量) from tb where 名称=t.名称) from tb t

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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