首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2013-07-08 
联合查询的SQL语句,如何在查询后的数据前加入自动序列 with WMG_DM.Gnl_ADOQuery dobeginclosesql.Clear

联合查询的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,加上这个字段就可以了。

热点排行