SQL zoskupenie   zodpovězená otázka

Databáze

Dobry den,

viete mi poradit funkciu v MSSQL 2008 aby som dostal z dat vysledok nizsie tj. zoskupene data podla kodu, obce a Ulice nad kazdu skupinu doplnit prve pismeno z ulice:

zdrojove data po selecte:

KOD|OBEC|ULICA|Orientacne_Supisne_Cislo

49 |Nitrianske Hrnčiarovce| Adyho| 2/602, 4/603, 6/604, 8/605

49 |Nitrianske Hrnčiarovce| Agátová| 1/363, 2/374, 3/364, 4/375, 5/365, 28/722

49 |Nitrianske Hrnčiarovce| Attilova| 1/491, 1A/732, 2/501, 3/492, 4/502

4 |Nitra| Beethovenova| 1/448, 2/450, 3/449, 4/450, 5/449, 6/451

3 |Nitra| Partizánska| 64/21, 66/21

3 |Nitra| Považská| 2/18, 3/15, 4/18, 5/15

2 |Nitra| Viničky| 1/151, 1/37, 3/37

2 |Nitra| Viničky| 8, 9/38, 11/38, 13/38, 15/39, 17/39, 19/39, 21/39

potrebujem vysledok:

KOD|OBEC|ULICA|Orientacne_Supisne_Cislo

A

49 |Nitrianske Hrnčiarovce| Adyho| 2/602, 4/603, 6/604, 8/605

49 |Nitrianske Hrnčiarovce| Agátová| 1/363, 2/374, 3/364, 4/375, 5/365, 28/722

49 |Nitrianske Hrnčiarovce| Attilova| 1/491, 1A/732, 2/501, 3/492, 4/502

B

4 |Nitra| Beethovenova| 1/448, 2/450, 3/449, 4/450, 5/449, 6/451

P

3 |Nitra| Partizánska| 64/21, 66/21

3 |Nitra| Považská| 2/18, 3/15, 4/18, 5/15

V

2 |Nitra| Viničky| 1/151, 1/37, 3/37

2 |Nitra| Viničky| 8, 9/38, 11/38, 13/38, 15/39, 17/39, 19/39, 21/39

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak asi takhle (jestli jsem to správně pochopil).

Místo mého CTE si v selectu dosaďte váš zdroj dat.

--CTE pro zdroj dat
;WITH Zdroj (Kod, Obec, Ulica, Orientacne_Supisne_Cislo)
AS
(
SELECT 49 AS Kod, 'Nitrianske Hrnčiarovce' AS Obec, 'Adyho' AS Ulica, '2/602, 4/603, 6/604, 8/605' AS Orientacne_Supisne_Cislo
UNION ALL
SELECT 49, 'Nitrianske Hrnčiarovce', 'Agátová', '1/363, 2/374, 3/364, 4/375, 5/365, 28/722'
UNION ALL
SELECT 49, 'Nitrianske Hrnčiarovce', 'Attilova', '1/491, 1A/732, 2/501, 3/492, 4/502'
UNION ALL
SELECT 4 , 'Nitra', 'Beethovenova', '1/448, 2/450, 3/449, 4/450, 5/449, 6/451'
UNION ALL
SELECT 3 , 'Nitra', 'Partizánska', '64/21, 66/21'
UNION ALL
SELECT 3 , 'Nitra', 'Považská', '2/18, 3/15, 4/18, 5/15'
UNION ALL
SELECT 2 , 'Nitra', 'Viničky', '1/151, 1/37, 3/37'
UNION ALL
SELECT 2 , 'Nitra', 'Viničky', '8, 9/38, 11/38, 13/38, 15/39, 17/39, 19/39, 21/39'
)

SELECT Kod, Obec, Ulica, Orientacne_Supisne_Cislo
 FROM (SELECT 1 AS Typ, UPPER(LEFT(Ulica, 1)) AS [Group], CAST(Kod AS nvarchar(5)) AS Kod, Obec, Ulica, Orientacne_Supisne_Cislo
		 FROM Zdroj
		UNION ALL
	   SELECT 2 AS Typ, UPPER(LEFT(Ulica, 1)) AS [Group], UPPER(LEFT(Ulica, 1)) AS Kod, NULL AS Obec, NULL AS Ulica, NULL AS Orientacne_Supisne_Cislo
		 FROM Zdroj
		GROUP BY UPPER(LEFT(Ulica, 1))
	  ) Sub
 ORDER BY [Group], Typ DESC

Vrací:

A	NULL	NULL	NULL
49	Nitrianske Hrnčiarovce	Adyho	2/602, 4/603, 6/604, 8/605
49	Nitrianske Hrnčiarovce	Agátová	1/363, 2/374, 3/364, 4/375, 5/365, 28/722
49	Nitrianske Hrnčiarovce	Attilova	1/491, 1A/732, 2/501, 3/492, 4/502
B	NULL	NULL	NULL
4	Nitra	Beethovenova	1/448, 2/450, 3/449, 4/450, 5/449, 6/451
P	NULL	NULL	NULL
3	Nitra	Partizánska	64/21, 66/21
3	Nitra	Považská	2/18, 3/15, 4/18, 5/15
V	NULL	NULL	NULL
2	Nitra	Viničky	1/151, 1/37, 3/37
2	Nitra	Viničky	8, 9/38, 11/38, 13/38, 15/39, 17/39, 19/39, 21/39
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

dakujem, tento pristup na nenapadol..... super

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback