Joanna J.

Joanna J. Ryzyko kredytowe,
Bank Pekao S.A.

Temat: Łączenie danych

Witam,

Potrzebuję pomocy w poniższej kwestii, chodzi o łączenie danych w accessie.
Załóżmy, że mam tabelę zawierającą dane transakcji dotyczące klientów(regony 111,222,333), numerów umów(A1, A2.., B1, B2, itd) oraz grup ryzyka (1, 2, 3) dla poszczególnych umów. Jeden klient ma kilka umów i każda umowa może mieć inna grupę ryzyka.

Tabela:
Regon Nr_umowy Gr ryzyka
111 A1 1
111 A2 1
111 A3 2
111 A4 2
111 A5 3
222 B1 3
222 B2 1
222 B3 1
222 B4 1
333 C1 2
333 C2 1
333 C3 1
333 C4 1

Z samym wyświetleniem regonów klientów i grupy ryzyka wybranej dla największej umowy (same nr umów w tym momencie są nieważne) nie ma problemu, ale interesuje mnie trochę inne rozwiązanie, a mianowicie czy da się stworzyć jakaś kwerendę, która wyświetliłaby dane dotycząc regonu klienta i wszystkich grup ryzyka jakie pojawiły się przy jego umowach, tzn.

Regon Gr ryzyka
111 1, 2, 3
222 1, 3
333 1, 2

Czy jest na to jakiś szybki sposób?

Z góry dziękuję za pomoc.
Pozdrawiam.Joanna Jemioł edytował(a) ten post dnia 14.02.12 o godzinie 20:11
Michał Tomiak

Michał Tomiak Analityk Sprzedazy,
Europapier -Impap

Temat: Łączenie danych

Cześć
OCzywiście że można. Tworzysz kwerendę, przeciągasz regiony, nr umowy i wszystko inne co potrzebujsze. JEst to najzwyklejsa kwerenda wybierajaca. Mozesz sobie zgrupować dane np po regionie.
Czy wiesz gdzie stworzyć kwerende ???

W razie pytań pisz na priv

Pozdr
Michał Dziubek

Michał Dziubek Programista,
INFORM\'1

Temat: Łączenie danych

@Joanna
Rozwiazanie połowiczne:

TRANSFORM
IIF(Sum(qryTab.ile)>0,"X","") AS SumaOfile
SELECT
qryTab.regon
FROM (SELECT DISTINCT
tab.regon
,tab.[gr ryzyka]
, 1 AS ile
FROM tab) as qryTab
GROUP BY
qryTab.regon
PIVOT
qryTab.[gr ryzyka];


Trochę inaczej wynik przedstawiony ale sens ten sam.

Agregowanie stringów poprzez łączenie, masz opisane tutaj:

http://allenbrowne.com/func-concat.html

@michał: Skoro to takie proste to, zrób proszę tę kwerendę za pomocą kreatora i wklej jej kod SQL-a, chętnie się czegoś nowego naucze...
Michał Tomiak

Michał Tomiak Analityk Sprzedazy,
Europapier -Impap

Temat: Łączenie danych

Kreatorem tego sie nie zrobi ale mozna to zrobić przerabiajac kwerende wybierajaca na pivota.
Wg mnie nie potrzeba do tego SQL ale zawsze moge sie mylic .
Pozdr
Michał Dziubek

Michał Dziubek Programista,
INFORM\'1

Temat: Łączenie danych

To pokaż to rozwiązanie, całkiem serio pisze, nie bardzo wiem jak chcesz rozwiazać katenacje stringów

konto usunięte

Temat: Łączenie danych

Michał Dziubek:
To pokaż to rozwiązanie, całkiem serio pisze, nie bardzo wiem jak chcesz rozwiazać katenacje stringów

np. Najpierw tworzysz Kwerenda1

SELECT DISTINCT Arkusz1.Regon, Arkusz1.Gr
FROM Arkusz1;

a potem wykorzystując ją tworzysz w kreatorze kwerendę

TRANSFORM Count(Kwerenda1.Gr) AS PoliczOfGr
SELECT Kwerenda1.Regon
FROM Kwerenda1
GROUP BY Kwerenda1.Regon
PIVOT Kwerenda1.Gr;

Czyli praktycznie to co Ty zaproponowałeś z tym, że nie mamy od razu jednego pola sklejającego info o grupach.Damian Walczyk edytował(a) ten post dnia 15.02.12 o godzinie 04:18
Michał Dziubek

Michał Dziubek Programista,
INFORM\'1

Temat: Łączenie danych

Damianie jak zrobić obejście to wiem, ale wg. Michała to prosta kwerenda wybierająca, nawet oferuje pomoc prywatnie w jej utworzeniu, więc chciałbym się dowiedzieć jak to zrobić, bo może jest myk którego poprostu nie znam.
Opieram się na tym, ze widzę dane i oczekiwany efekt i o te sklejające dane mi się rozchodzi.

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Łączenie danych

Michał Dziubek:
[...]
Trochę inaczej wynik przedstawiony ale sens ten sam.
Można prościej, bez zamiany grup i wykorzystania IIF:
TRANSFORM tblFirmy.GrRyzyka
SELECT tblFirmy.Regon
FROM tblFirmy
GROUP BY tblFirmy.Regon
PIVOT tblFirmy.GrRyzyka;

Ale to i tak kwerenda krzyżowa, a nie wybierająca. Natomiast kreatorem nie da się podwójnie wybrać pola do nagłówka i do wartości.

A jeśli Pani Joannie zależy na tym, żeby to przedstawić w postaci raportu, do wglądu, to chyba lepiej czytałoby się to robiąc raport z Accessa, z grupowaniem po Regonie i listą grup ryzyka pod nim - i tak dla każdego regionu, niż wtedy, gdy łączy się poszczególne grupy ryzyka w jeden ciąg?
Joanna J.

Joanna J. Ryzyko kredytowe,
Bank Pekao S.A.

Temat: Łączenie danych

Witam,

Dziękuję za wszelkie sugestie, poradziłam sobie z tym problemem w taki sposób jak chciałam.

Pozdrawiam.

Temat: Łączenie danych

Joanna Jemioł:
Witam,

Dziękuję za wszelkie sugestie, poradziłam sobie z tym problemem w taki sposób jak chciałam.

Przepraszam za wtrącenie nie merytoryczne, ale jak widzę odp autora wątku na jakiejkolwiek z grup to po prostu sz.... być może nie potrzebnie.

Pozdrawiam
Paweł
Michał Dziubek

Michał Dziubek Programista,
INFORM\'1

Temat: Łączenie danych

Joanna Jemioł:
Witam,

Dziękuję za wszelkie sugestie, poradziłam sobie z tym problemem w taki sposób jak chciałam.


Cudownie, to może opiszesz jak tak dla potomnych borykających się z tym problemem
Joanna J.

Joanna J. Ryzyko kredytowe,
Bank Pekao S.A.

Temat: Łączenie danych

Witam,

Nie wiem za bardzo co było złego w tym, że podziękowałam za pomoc?

A metody nie muszę opisywać, bo jest opisana powyżej, mając dane w kwerendzie krzyżowej, tylko połączyłam funkcją "nz" wszystkie grupy ryzyka dla danego klienta oddzielając je przecinkami:
nz(iif(kw1.gr_ryz_1) is not null;kw1.gr_ryz_1&" ,";"")&nz(iif(kw1.gr_ryz_2) is not null;kw1.gr_ryz_2&" ,";"")&nz(iif(kw1.gr_ryz_3) is not null;kw1.gr_ryz_3&" ,";"").
Otrzymałam wykaz gr np w postaci "1 ,2 ,3 ,". Pozbyłam się ostatniego przecieka korzystając z funkcji
Mid(kw2.wszystkie_grupy;1;len(kw2.wszystkie_grupy)-1)
i uzyskałam dokładnie taką postać w jakiej chciałam przedstawić te dane.

Pozdrawiam.Joanna Jemioł edytował(a) ten post dnia 23.02.12 o godzinie 19:12
Michał Dziubek

Michał Dziubek Programista,
INFORM\'1

Temat: Łączenie danych

Joanna Jemioł:
Nie wiem za bardzo co było złego w tym, że podziękowałam za pomoc?

Nic, to nawet miłe, co mnie ogólnie denerwuje to fakt, że ktoś dostaje odpowiedzi, które nie są pełnym rozwiązaniem problemu, po czym chwali się, ze rozwiązał problem, ale nie pisze jak. Pomyśl co byś poczuła jakbyś trafiła na ten wątek przeczytała pytanie, okazało się ze to jest to czego szukasz i dochodzisz do ostatniej odpowiedzi...


Co do Twojego rozwiązania to mam 1 uwagę:
Pamiętaj, że jak np z zakresu który wybierasz wypadnie Ci grupa 2 to pivot nie utworzy takiej kolumny, przez co wszystko się posypie.
Joanna J.

Joanna J. Ryzyko kredytowe,
Bank Pekao S.A.

Temat: Łączenie danych

Może rzeczywiście tak zabrzmiało, że się chwalę, ale nie miałam tego na myśli:(
Najbardziej w moim problemie pomogło mi stworzenie kwerendy krzyżowej, o czym sama nie pomyślałam:(A wskazówka o konkatenacji pomogła mi osiągnąć to co chciałam.

Użyłam trochę innej formuły, niz napisałam powyżej:
Mid(kw2.wszystkie_grupy;1;len(Rtrim(kw2.wszystkie_grupy))-1)

Nie bardzo wiem, co masz na myśli mówiąc, że jak jakaś grupa wypadnie, to się wszystko posypie?Ja biore tylko dane z pivota, bo tam jeset zawarte wszystko co chce pokazać.

Pozdrawiam.
Michał Dziubek

Michał Dziubek Programista,
INFORM\'1

Temat: Łączenie danych

Jeżeli np w kolumnie grupa_ryzyka nie będziesz miała wartości 2 to w wyniku pivota nie będziesz miała kolumny gr_ryz_2 i Twoja katenacja wywali błąd bo nie będzie takiej kolumny.
Joanna J.

Joanna J. Ryzyko kredytowe,
Bank Pekao S.A.

Temat: Łączenie danych

Tak,ale ja łączyłam ze sobą tylko to co miałam w wyniku kwerendy krzyżowej. Te oznaczenia, które wcześniej napisałam były tylko przykładowe.

Następna dyskusja:

Łączenie danych z tabel




Wyślij zaproszenie do