[英]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.