![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 23.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich,
Mam do rozwiązania jeden problem, z którym nie mogę sobie poradzić. Mam jeszcze sporo braków w konstruowaniu zapytań, ale mam nadzieje ze z czasem to się zmieni. Do rzeczy: Posiadam tabelę zawierającą: PK| Numer_id | RODZAJ OPŁATY | Opcja_1 | Opłata | Waga | PK| Pole14 | Pole46 | Pole49 | Pole53 | Pole29| +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | 85495 | Opłata standardowa | 0.00 | 11.00 | 2,5 | | 85495 | Opłata paliwowa | 27.50 | 0.44 | 0,00 | | 85495 | Zadeklarowana wartość | 490.98 | 0.66 | 0,00 | | 85495 | Podatek | 0.00 | 2.67 | 0,00 | | 85502 | Opłata standardowa | 0.00 | 11.00 | 2,9 | | 85502 | Opłata paliwowa | 27.50 | 0.44 | 0,00 | | 85502 | Zadeklarowana wartość | 564.75 | 0.66 | 0,00 | | 85502 | Podatek | 0.00 | 2.67 | 0,00 | | 85520 | Opłata standardowa | 0.00 | 11.00 | 2,5 | | 85520 | Opłata paliwowa | 29.00 | 0.44 | 0,00 | | 85520 | Zadeklarowana wartość | 712.29 | 0.66 | 0,00 | | 85520 | Pobranie | 730.00 | 1.15 | 0,00 | Potrzebuję otrzymać następujące zestawienie: PK | Numer_id | Opłata Standardowa | Opłata paliwowa | Zadeklarowana wartość | Opłata za deklaracje | Pobranie | Opłata za pobranie | Waga | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++ | | wartość z Opłata | wartość z Opłata | Wartość z Opłata | Wartość z opłata | wartość z Opcja_1 | Wartość z Opłata | Wartość z Waga | |gdzie Pole46 zgodne | |z nagłowkiem | Problem polega na tym, że próbuję to zrobić na kilka sposobów i ciągle bezskutecznie. Wygląda to mniej więcej podobnie do Tabeli PIVOT w Excelu, jednak dla kilkudziesieciu tysiecy pozycji Excel pada na kolana... Dla zliczenia poszczególnych numerów listów wybrałem wraz z ilością opłat wybrałem:
Teraz pojawia się problem: jak do tego wyniku DODAĆ kolumny np. "Opłata paliwowa" tylko dla tych zamówień gdzie Opłata paliwowa jest naliczona, albo "Pobranie" dla tych gdzie Pobranie istnieje ? HELP (IMG:style_emoticons/default/exclamation.gif) ! |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Tabela do normalizacji.
Można kombinować w ten sposób Kod SELECT DISTINCT tabela.PK, t1.Pole53 , t2.Pole53, t3.Pole53 ... FROM tabela LEFT JOIN ( SELECT * FROM tabela WHERE Pole46 = 'Opłata standardowa' ) AS t1 USING(PK) LEFT JOIN ( SELECT * FROM tabela WHERE Pole46 = 'Opłata paliwowa' ) AS t2 USING(PK) LEFT JOIN ( SELECT * FROM tabela WHERE Pole46 = 'Zadeklarowana wartość' ) AS t3 USING(PK) ... ale to tak samo jak można zakłądać slipy na spodnie. Lepiej przekonstruować tabelę. Ten post edytował Mchl 23.06.2010, 11:59:22 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 1 Dołączył: 17.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
poszukaj sobie o warunku IF w zapytaniach sql
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 23.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Rozdzieliłem tabele na kilka mniejszych, odpowiadających konkretnym zapytaniom. Teraz zwykłe JOIN i wszystko jest ok. Problem w tym, że tabela, którą podałem na początku to faktura, która zawsze ma taką postać, a analizować trzeba ją w specyficzny sposób. Po prostu za miesiąc czeka mnie kolejne rozbijanie faktury ...
oczywiście dziękuje za pomoc |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Jak zawsze ma taką postać, to zrób automat który zrobi to za Ciebie (IMG:style_emoticons/default/winksmiley.jpg)
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 23.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
A czy istnieje jakiś sposób, aby wynik jednego zapytania zapisać do nowej tabeli?
W ten sposób mógłbym faktycznie tworzyć automatycznie tabele z odpowiednimi danymi... |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.09.2025 - 22:37 |