перестройте отделенные ценности запятой в sql

Привет у меня есть два стола столов, у каждого есть Информация о графстве и у другого есть RowData

Стол Страны похож

Country_ID  Region_ID   Country_Name              Abbreviation Priority
----------- ----------- ------------------------- ------------ -----------
1           1           United States             USA          1
2           1           US                        USA          1
3           1           Canada                    CA           2
4           2           United Kingdom            UK           1
5           2           Germany                   DE           1
6           2           France                    FR           1
7           2           Italy                     IT           1
8           2           Spain                     ES           1
9           2           The Netherlands           NL           1
10          2           Poland                    PL           2
11          2           Russia                    RU           2

и RowData похож

Tr_ID       Countrys
----------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
729541      Germany,United Kingdom
729553      Italy,Poland,Russia,Spain
729580      Austria,Finland,France,Germany,Ireland,Italy,Poland,Portugal,Romania,Russia,Slovakia,Spain,Sweden,Switzerland,The Netherlands,United Kingdom
729726      Italy,Spain,United Kingdom
729737      Austria,United Kingdom

Я хочу перестроить графство в согласно приоритету, отданному в столе графства

Приоритет, которым должно быть 1 графство, происходит, сначала рассверливая страну затем с повторенной запятой Пожалуйста, помогите мне на этом

Спасибо

0
nl ja de
Какую базу данных вы используете? Вам нужен весь приоритет 1 страна, чтобы быть в алфавитном порядке?
добавлено автор Chetter Hummin, источник
я использую SQL-сервер 2008. весь приоритет 1 требуемое графство, но не в алфавитном порядке..
добавлено автор user1632718, источник

1 ответы

Скрипка SQL

MS SQL Server 2008 Schema Setup:

create table Country
(
  Country_ID int,
  Region_ID int,
  Country_Name varchar(25),
  Abbreviation varchar(5),
  Priority int 
);

insert into Country values
(1 ,  1,   'United States',   'USA', 1),
(2 ,  1,   'US',              'USA', 1),
(3 ,  1,   'Canada',          'CA ', 2),
(4 ,  2,   'United Kingdom',  'UK ', 1),
(5 ,  2,   'Germany',         'DE ', 1),
(6 ,  2,   'France',          'FR ', 1),
(7 ,  2,   'Italy',           'IT ', 1),
(8 ,  2,   'Spain',           'ES ', 1),
(9 ,  2,   'The Netherlands', 'NL ', 1),
(10,  2,   'Poland',          'PL ', 2),
(11,  2,   'Russia',          'RU ', 2)

create table RowData
(
  Tr_ID int,
  Countrys varchar(200)
)

insert into RowData values
(729541,  'Germany,United Kingdom'),
(729553,  'Italy,Poland,Russia,Spain'),
(729580,  'Austria,Finland,France,Germany,Ireland,Italy,Poland,Portugal,Romania,Russia,Slovakia,Spain,Sweden,Switzerland,The Netherlands,United Kingdom'),
(729726,  'Italy,Spain,United Kingdom'),
(729737,  'Austria,United Kingdom')

Query 1:

select R.Tr_ID,
       (
       select ','+C.Country_Name
       from Country as C
       where ','+R.Countrys+',' like '%,'+C.Country_Name+',%'
       order by C.Priority
       for xml path(''), type
       ).value('substring(text()[1], 2)', 'varchar(200)') as Countrys
from RowData as R

Results:

|  TR_ID |                                                                COUNTRYS |
------------------------------------------------------------------------------------
| 729541 |                                                  United Kingdom,Germany |
| 729553 |                                               Italy,Spain,Poland,Russia |
| 729580 | United Kingdom,Germany,France,Italy,Spain,The Netherlands,Poland,Russia |
| 729726 |                                              United Kingdom,Italy,Spain |
| 729737 |                                                          United Kingdom |
2
добавлено
Примечание: страны в RowData , который пропускает в Страну , удалены.
добавлено автор Mikael Eriksson, источник
SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)