首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server2012/在两个查询上添加row_number?

SQL Server2012/在两个查询上添加row_number?
EN

Stack Overflow用户
提问于 2014-10-24 16:18:39
回答 2查看 69关注 0票数 1

我有一个关于在2个查询中添加行号的问题。

我的问题是:

代码语言:javascript
复制
SELECT 
    'telxm001001' AS Node, 
    '1' AS [Speed Dialing], 
    '0' AS [Spd DI Numbers by Range], 
    NULL as 'Speed Dialing No.',  
    REPLACE(TelefonGeschaeft, '+', '00') AS [Call Number], 
    Nachname AS [Directory Name], 
    Vorname AS [Directory First Name]
FROM
    dbo.MaData
WHERE        
    (TelefonGeschaeft LIKE '+%')

UNION ALL

SELECT       
    'telxm001001' AS Node, 
    '1' AS [Speed Dialing], 
    '0' AS [Spd DI Numbers by Range], 
    ROW_NUMBER() OVER (ORDER BY Nachname) AS 'Speed Dialing No.',    
    REPLACE(MobiltelefonGeschaeft, '+', '00') AS [Call Number], 
    Nachname AS [Directory Name], 
    Vorname AS [Directory First Name]
FROM
    dbo.MaData
WHERE        
    (MobiltelefonGeschaeft LIKE '+%')

我有一个包含1400个条目的SQL Server表。这两个查询得到了正确的结果,但行号不正确,因为当第二个查询开始时,计算从1开始。因此,在我的查询结果中,我有一个从1到680的数字,然后当第二个查询开始时,数字从1开始。有没有办法在两个查询完成后添加行编号,使计数从1到1400?

最好的问候时断时续

EN

回答 2

Stack Overflow用户

发布于 2014-10-24 16:26:33

在派生查询上应用ROW_NUMBER排序;在各个查询中提供鉴别器(例如queryOrder),以将相关结果分组。

代码语言:javascript
复制
SELECT ROW_NUMBER() OVER (ORDER BY queryOrder, [Directory Name]) AS number
FROM (
  SELECT 1 AS queryOrder, [Directory Name] ..
  UNION ALL
  SELECT 2 AS queryOrder, [Directory Name] ..
) j
票数 0
EN

Stack Overflow用户

发布于 2014-10-24 16:28:37

在跳到这个查询之前,你想知道这两个查询的行号吗?

如果是,为什么在第一个查询中放入NULL?

如果您希望这两个查询都有行号,请在这两个查询上使用行号。

否则,尝试将它们放入另一个查询中,如下所示:

代码语言:javascript
复制
select 
     ROW_NUMBER over ..., Node, [Speed Dialing], .... 
from 
     (<actual query here>) as temp1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26544005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档