如何增加一个序号列?

凋零的老树 2010-06-22 02:12:08
已有列 增加列
aaa 1
aaa 1
bbb 2
ccc 3

这样列怎么增加? 就是怎么写这个sql语句,谢谢
...全文
169 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
永生天地 2010-06-22
  • 打赏
  • 举报
回复
SELECT A.批号,A.班次,A.产量,SUM(B.产量) 当班总量
FROM TAB A LEFT JOIN TAB B ON A.班次>=B.班次
GROUP BY A.批号,A.班次,A.产量
htl258_Tony 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 kongxiangli 的回复:]
很好,其实就是计算其个数,能不能求和了?

就是这样的列
批号 班次 产量 当班总量(要增加的列)
a 1 20 20
a 2 10 30
a 3 10 40
a 4 20 60

就是需要累加前一列
[/Quote]
当前可以了,楼主你应该早说啊

--> 生成测试数据表: [tb]
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb] ([批号] [nvarchar](10),[班次] [int],[产量] [int],[当班总量(要增加的列)] [int])
INSERT INTO [tb]
SELECT 'a','1','20','20' UNION ALL
SELECT 'a','2','10','30' UNION ALL
SELECT 'a','3','10','40' UNION ALL
SELECT 'a','4','20','60'

--SELECT * FROM [tb]

-->SQL查询如下:
SELECT *, newcol = (
SELECT SUM(产量)
FROM tb
WHERE 批号 = t.批号
AND 班次<= t.班次
)
FROM tb t
/*
批号 班次 产量 当班总量(要增加的列) newcol
---------- ----------- ----------- ----------- -----------
a 1 20 20 20
a 2 10 30 30
a 3 10 40 40
a 4 20 60 60

(4 行受影响)
*/
凋零的老树 2010-06-22
  • 打赏
  • 举报
回复
很好,其实就是计算其个数,能不能求和了?

就是这样的列
批号 班次 产量 当班总量(要增加的列)
a 1 20 20
a 2 10 30
a 3 10 40
a 4 20 60

就是需要累加前一列
jianuMan 2010-06-22
  • 打赏
  • 举报
回复
2005的话
01.create table #temp
02.(
03. name varchar(20)
04.)
05.go
06.insert into #temp values('jianuman')
07.insert into #temp values('东')
08.insert into #temp values('南')
09.insert into #temp values('西')
10.insert into #temp values('北')
11.go
12.SELECT ROW_NUMBER() OVER (ORDER BY NAME DESC) AS ID, NAME
13.FROM #TEMP

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jianuMan/archive/2010/06/20/5681656.aspx
shixixi1987 2010-06-22
  • 打赏
  • 举报
回复
if not exists(select * from syscolumns where id=object_id('表名') and [name]='列名')
alter table 表名 add 列名 nvarchar(20) NULL
chuifengde 2010-06-22
  • 打赏
  • 举报
回复
declare @a table(a varchar(20),o int)
insert @a select 'aaa',null
union all select 'aaa',null
union all select 'bbb',null
union all select 'ccc',null
--2000
declare @i int,@s varchar(20)
set @i=0
update @a set @i=case when @s=a then @i else @i+1 end,@s=a,o=@i
select * from @a
--2008
select a,DENSE_RANK() over (order by a) from @a

--result
/*a o
aaa 1
aaa 1
bbb 2
ccc 3*/
htl258_Tony 2010-06-22
  • 打赏
  • 举报
回复
--> 生成测试数据表: [tb]
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb] ([col] [nvarchar](10))
INSERT INTO [tb]
SELECT 'aaa' UNION ALL
SELECT 'aaa' UNION ALL
SELECT 'bbb' UNION ALL
SELECT 'ccc'

--SELECT * FROM [tb]

-->SQL查询如下:
SELECT col, rn = DENSE_RANK()OVER(ORDER BY col)
FROM tb
/*
col rn
---------- --------------------
aaa 1
aaa 1
bbb 2
ccc 3

(4 行受影响)
*/

--2k如下:
SELECT col,rn=(SELECT COUNT(DISTINCT col) FROM tb WHERE col<=t.col)
FROM tb t
/*
col rn
---------- -----------
aaa 1
aaa 1
bbb 2
ccc 3

(4 行受影响)
*/
宇峰科技 2010-06-22
  • 打赏
  • 举报
回复
ALTER TABLE tablename
ADD column newcolumn (int)
htl258_Tony 2010-06-22
  • 打赏
  • 举报
回复
select col,rn=dense_rank()over(order by col) from tb
水族杰纶 2010-06-22
  • 打赏
  • 举报
回复
2000
2005?

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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