SQL - grupowanie po kluczu w kolumnach

0

Dobry wieczór.
Jestem nowym użytkownikiem tego forum. Starałem się przeszukać wątki ale chyba nie znalazłem rozwiązania tego co mnie od kliku dni męczy.
Bardzo słabo znam SQL'a, a muszę zacząć się go uczyć ze względu na fakt, że dostałem do uporządkowania dane na serwerze bazującym na SQL'u.
Raz idzie mi lepiej raz gorzej ale od klku dni nie potrafię znaleźć rozwiązania (choć wydaje mi się, że nie powinno to być skomplikowane dla ludzi, którzy mają z SQL'em do czynienia na co dzień.
Proszę zatem o pomoc.

Napisałem takie zapytanie:

SELECT
RANK () OVER( ORDER BY plan ASC)
id,plan,priority,contextname,roadname
FROM
roadplan rp inner join roadname tg on rd.id=rp.rdname
WHERE
(contextname!'fasteast_*' and contextname!'fastsouth_' and roadname~'longway_to_west')
or
(contextname!~'fasteast_
' and contextname!'fastsouth_*' and roadname'shortway_to_west')

w efekcie dostaję coś takiego

11 0022590409. 23 slowtrafficwest southwest_road_#46
11 0022590409. 23 slowtrafficwest northwest_road_#73
13 002272010. 23 slowtrafficwest southwest_road_#46
13 002272010. 23 slowtrafficwest northwest_road_#73
15 002272039. 23 slowtrafficwest northwest_road_#73
15 002272039. 23 slowtrafficwest southwest_road_#46
17 0023722258. 23 slowtrafficwest northwest_road_#73
17 0023722258. 23 slowtrafficwest southwest_road_#46
19 0023788005. 23 slowtrafficwest northwest_road_#73
19 0023788005. 23 slowtrafficwest southwest_road_#46

a chciałbym coś takiego :

11 0022590409. 23 slowtrafficwest northwest_road_#73 southwest_road_#46
13 002272010. 23 slowtrafficwest northwest_road_#73 southwest_road_#46
15 002272039. 23 slowtrafficwest northwest_road_#73 southwest_road_#46
17 0023722258. 23 slowtrafficwest northwest_road_#73 southwest_road_#46
19 0023788005. 23 slowtrafficwest northwest_road_#73 southwest_road_#4

bo w zasadzie szukam czegoś takiego:

11 0022590409. 23 slowtrafficwest northwest_road_#73
13 002272010. 23 slowtrafficwest northwest_road_#73 southwest_road_#46
15 002272039. 23 slowtrafficwest southwest_road_#46
17 0023722258. 23 slowtrafficwest northwest_road_#73 southwest_road_#46
19 0023788005. 23 slowtrafficwest

mówiąc krótko. Mam odnaleźć dziury i braki

z góry bardzo wszystkim dziękuję za pomoc

0

Żeby uzyskać taki wynik na zasadzie ColumnID | NUMBER | TEXT | A | B | C -> To trzeba by mocno rzeźbić w DynamicSql nie wiem czy jest to nawet w ogóle wykonalne.

Podobny wynik można osiągnąć wykonując grupowanie po czym wyniki wyrzucić do jednej kolumny.

SELECT Number, 
STUFF(
(SELECT ' ' + mv.Road+ '  ' 
FROM Database mv
WHERE mv.Number= mc.Number
FOR XML PATH('')),1,1,'') as Drogi
FROM Database   mc
WHERE
(contextname!~'fasteast_*' and contextname!~'fastsouth_*' and roadname~'longway_to_west')
or
(contextname!~'fasteast_*' and contextname!~'fastsouth_*' and roadname~'shortway_to_west')
GROUP BY mc.Number

To rozwiązanie zadziała w T-sql, ale dla sporej ilości danych będzie strasznie nieefektywne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1