读书人

联合查询的SQL语句怎么在查询后的数

发布时间: 2013-07-08 14:13:00 作者: rapoo

联合查询的SQL语句,如何在查询后的数据前加入自动序列

 with WMG_DM.Gnl_ADOQuery do
begin
close;
sql.Clear;



sql.Add('(select pod,workid as 工作证号,zgname as 姓名,csrq as 出生日期,datediff(year,csrq,getdate()) as 年龄, ');

sql.Add('cjgzsj as 参加工作时间,datediff(year,cjgzsj,getdate())+1 as 工龄, (datediff(year,cjgzsj,getdate())+1)*5 as 工龄工资 from jbxxtab where datediff(year,cjgzsj,getdate())<=10 ) union all ');

sql.Add('(select pod,workid as 工作证号,zgname as 姓名,csrq as 出生日期,datediff(year,csrq,getdate()) as 年龄, ');

sql.Add('cjgzsj as 参加工作时间,datediff(year,cjgzsj,getdate())+1 as 工龄, (datediff(year,cjgzsj,getdate())-9)*6+50 as 工龄工资 from jbxxtab where datediff(year,cjgzsj,getdate())>10 and datediff(year,cjgzsj,getdate())<=20 ) union all ');

sql.Add('(select pod,workid as 工作证号,zgname as 姓名,csrq as 出生日期,datediff(year,csrq,getdate()) as 年龄, ');

sql.Add('cjgzsj as 参加工作时间,datediff(year,cjgzsj,getdate())+1 as 工龄, (datediff(year,cjgzsj,getdate())-19)*8+110 as 工龄工资 from jbxxtab where datediff(year,cjgzsj,getdate())>20 and datediff(year,cjgzsj,getdate())<=30 ) union all ');

sql.Add('(select pod,workid as 工作证号,zgname as 姓名,csrq as 出生日期,datediff(year,csrq,getdate()) as 年龄, ');

sql.Add('cjgzsj as 参加工作时间,datediff(year,cjgzsj,getdate())+1 as 工龄, (datediff(year,cjgzsj,getdate())-29)*10+190 as 工龄工资 from jbxxtab where datediff(year,cjgzsj,getdate())>30 ) order by id ');



open;
end;

数据库是SQLserver2005
用ROW_NUMBER() OVER (order by id) as RecNo好像不能加吧?有 union all
请大神们指导下,这种的怎么在查询结果后加自动序号呀? SQL
[解决办法]
select q.*,row_number() over(order by q.id) as RecNo
from (...) q
--把你上面的查询放到括号中,如果你原来查询中没加上字段id,加上这个字段就可以了。

读书人网 >.NET

热点推荐