Определите, является ли строка из соединения нечетной или четной в SQL Server - PullRequest
0 голосов
/ 18 августа 2011

У меня есть запрос, который возвращает строку данных для каждой страны, а также другую связанную информацию.Запрос (с удалением всего несущественного) выглядит следующим образом:

SELECT a.*, ROW_NUMBER() OVER(ORDER BY a.DateSubmitted) As RowNumber, c.CountryName FROM     Table1 a
inner join Table2 b
on a.id = b.id
inner join Table3 c on c.countrycode = b.countrycode

Возвращает номер строки для каждой строки следующим образом:

    ID  User        Country     RowNumber
    8   testtest    BANGLADESH  1
    14  testtest    ANGOLA      2
    14  testtest    AUSTRALIA   3
    14  testtest    BANGLADESH  4
    15  testera1    BELIZE      5
    15  testera1    CONGO       6

Однако мне нужно вернуть 0или 1 для каждого уникального ID , а не для каждой строки в основном утверждении, которое у меня уже есть.Поэтому мне хотелось бы получить следующее:

    ID  User        Country     RowNumber
    8   testtest    BANGLADESH  0
    14  testtest    ANGOLA      1
    14  testtest    AUSTRALIA   1
    14  testtest    BANGLADESH  1
    15  testera1    BELIZE      0
    15  testera1    CONGO       0

Я довольно слабо разбираюсь в SQL и, наконец, предпринимаю сознательную попытку улучшить его, поэтому большое спасибо за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 18 августа 2011

DENSE_RANK () может использоваться для присвоения каждому id разного значения, но со всеми вхождениями одного и того же id, имеющими одинаковое значение. Наберите % 2 на любой номер, и вы получите 0 или 1 ...

SELECT
  a.*,
  c.CountryName
  ROW_NUMBER() OVER(ORDER BY a.DateSubmitted)  As RowNumber,
  (DENSE_RANK() OVER (ORDER BY a.ID) - 1) % 2  As StrangeBinaryFlag
FROM
  Table1 a
INNER JOIN
  Table2 b
    ON a.id = b.id
INNER JOIN
  Table3 c
    ON c.countrycode = b.countrycode
1 голос
/ 18 августа 2011

Следуйте лучшей практике программирования и сделайте вашу жизнь и жизнь других проще:

Вместо того, чтобы возвращать информацию о форматировании в вашем запросе, вы должны выяснить, как менять цвет строки при изменении ключа в инструменте отображения. Это то, для чего он создан и сделает работу намного проще и элегантнее, чем когда-либо SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...