繁体   English   中英

SQL Server 2012 /在两个查询中添加row_number?

[英]SQL Server 2012 / Add row_number over two queries?

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

我的查询是:

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?

最好的问候

对派生的查询应用ROW_NUMBER排序; 通过各个查询提供区分符(例如queryOrder)以将相关结果分组。

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

在跳入这个查询的技巧之前,您是否想要两个查询的行号?

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

如果您希望两个查询都具有行号,请在两个查询中都使用它。

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

select 
     ROW_NUMBER over ..., Node, [Speed Dialing], .... 
from 
     (<actual query here>) as temp1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM