Просмотр SQL с идентификатором столбца - PullRequest
0 голосов
/ 14 января 2012

Я создаю запрос на выборку с объединением трех таблиц .... как это

select a as A,b as B c as C where c = x union
select b as A,d as B e as C where e = y and d = a union
select f as A,g as B,h as C

, и результат запроса выглядит так:

A   B   C
===========
1   abc ...
55  def ...
1   sas ...

, поэтому я хочуиметь столбец, который подсчитывает номер строки, просто чтобы предотвратить повторение идентификатора.Что-то вроде этого

Row  A   B   C
================
1    1   abc ...
2    55  def ...
3    1   sas ...

....

Мой вопрос: как это можно сделать?

Ответы [ 3 ]

5 голосов
/ 14 января 2012

Вы можете использовать ROW_NUMBER () следующим образом:

SELECT ROW_NUMBER() OVER (ORDER BY A,B,C) AS RowNo, *
FROM
(
select a as A,b as B c as C where c = x 
union
select b as A,d as B e as C where e = y and d = a 
union
select f as A,g as B,h as C
) x
3 голосов
/ 14 января 2012
CREATE VIEW dbo.vname
AS
    SELECT [Row] = ROW_NUMBER() OVER (ORDER BY A), A, B, C FROM
    ( <UNION query here> ) AS x;

Замените ORDER BY A тем порядком, который вы хотите применить.Обратите внимание, что вам нужно будет использовать ORDER BY во внешнем запросе к dbo.viewname, чтобы гарантировать, что Row выйдет в таком порядке.

1 голос
/ 14 января 2012

Вы можете использовать общее табличное выражение для достижения этой цели:

WITH unionTable
AS
(
    select a as A, b as B, c as C where c = x union
    select b as A, d as B, e as C where e = y and d = a union
    select f as A, g as B, h as C
)
SELECT ROW_NUMBER() OVER (ORDER BY A) AS RowNumber, * 
FROM unionTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...