sql如何添加序号

qqhe325 2007-03-30 12:41:34
借用一下zjcxc的例子
DECLARE @t TABLE(Item varchar(10),Color varchar(10),Quantity int)
INSERT @t SELECT 'Table','Blue',124
UNION ALL SELECT 'Table','Red', -23
UNION ALL SELECT 'Chair','Blue',101
UNION ALL SELECT 'Chair','Red', -90

--统计
SELECT Item,Color,Quantity
FROM(
--明细
SELECT Item,Color,Quantity=SUM(Quantity)
,s1=0,s2=Item,s3=0
FROM @t
GROUP BY Item,Color
UNION ALL
--各Item合计
SELECT '',Item+' 合计',Quantity=SUM(Quantity)
,s1=0,s2=Item,s3=1
FROM @t
GROUP BY Item
UNION ALL
--总计
SELECT '总计','',Quantity=SUM(Quantity)
,s1=1,s2='',s3=1
FROM @t
)a ORDER BY s1,s2,s3
/*--结果
Item Color Quantity
-------------- ---------------------- -----------
Chair Blue 101
Chair Red -90
Chair 合计 11
Table Red -23
Table Blue 124
Table 合计 101
总计 112
--*/


/*但我想给结果加个序号*/



/*--结果
id Item Color Quantity
-------------- ---------------------- -----------
1 Chair Blue 101
2 Chair Red -90
Chair 合计 11
1 Table Red -23
2 Table Blue 124
Table 合计 101
总计 112
--*/
谢谢!!
...全文
779 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
linakfg 2007-03-30
  • 打赏
  • 举报
回复
SELECT Item,Color,Quantity
FROM(
--明细
SELECT identity(int,1,1) as xh,Item,Color,Quantity=SUM(Quantity)
,s1=0,s2=Item,s3=0
FROM @t
GROUP BY Item,Color
UNION ALL
--各Item合计
SELECT identity(int,1,1) as xh,'',Item+' 合计',Quantity=SUM(Quantity)
,s1=0,s2=Item,s3=1
FROM @t
GROUP BY Item
UNION ALL
--总计
SELECT '总计','',Quantity=SUM(Quantity)
,s1=1,s2='',s3=1
FROM @t
)a ORDER BY s1,s2,s3
zjcxc 元老 2007-03-30
  • 打赏
  • 举报
回复
sql 2005的话, 有row_number()函数就行了
qqhe325 2007-03-30
  • 打赏
  • 举报
回复
RowOrder Item Color Quantity
----------- ---------- --------------- -----------
1 Chair Blue 101
2 Chair Red -90
Chair 合计 11
1 Table Red -23
2 Table Blue 124
Table 合计 101
总计 112

(所影响的行数为 7 行)
谢谢大家,但结果应该是这样的
hxd001_810 2007-03-30
  • 打赏
  • 举报
回复
SELECT IDentity(int,1,1) 'RowOrder',Item,Color,Quantity into #tmp
FROM(
--明细
SELECT Item,Color,Quantity=SUM(Quantity),s1=0,s2=Item,s3=0
FROM @t
GROUP BY Item,Color
UNION ALL
--各Item合计
SELECT '',Item+' 合计',Quantity=SUM(Quantity),s1=0,s2=Item,s3=1
FROM @t
GROUP BY Item
UNION ALL
--总计
SELECT '总计','',Quantity=SUM(Quantity),s1=1,s2='',s3=1
FROM @t
)a ORDER BY s1,s2,s3
select * from #tmp
drop table #tmp
qqhe325 2007-03-30
  • 打赏
  • 举报
回复
用的是sqlserver 2000
@linakfg()
在关键字 'identity' 附近有语法错误。
仅当 SELECT 语句中有 INTO 子句时,才能使用 IDENTITY 函数。

34,587

社区成员

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

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