nieznana liczba kolumn w podzapytaniach

0

Mam do napisania zapytanie, które zwróci ilość i sumę składników sprzedaży w rozbiciu na wartość VAT.
Czyli np

DOK | VAT_0 | VAT_7 | VAT_22 | VAT_ZW
NC/1|   2       |     0    |     3      |   0

Wyświetlam nagłówek i liczbę i sumę składników szczegółów w rozbiciu na VAT.
I tyle zrobiłem.
Tyle że na sztywno mam 4 podzapytania.
Ale co, jeśli ktoś doda kolejną wartość VAT ? Np 14% ?
Jak zapytanie ma sprawdzić ile jest różnych wartości VAT i tyle kolumn z tego utworzyć ?

Używam MsSQL

0

może byś tak podał z jakiej tabelki tego selecta robisz...
Masz dwa wyjścia
1 - generowanie zapytania w zależności od ilości stawek vat - wtedy dostaniesz jeden wiersz
2 - zapiast jednego wiersza ze stawkami dostaniesz tyle wierszy ile stawek (potrzebna jest tabelka z której to robisz, ale generalnie zapoznaj się sum i group by)

0

SUM i GROUP BY to ja znam
I jeśli liczba stawek jest stała to łatwo zrobić odpowiednią liczbę podzapytań.
Ale ja nie wiem ile może być różnych stawek !
Program sam musi utworzyć odpowiednią liczbę kolumn, tyle ile różnych stawek !

0

No może słówka to ty znasz, ale używać to na pewno nie potrafisz bo byś tu nie krzyczał.
Zrób, co Ci napisał MisiekD i pokaż z jakiej (jakich) tabel to wyciągasz.

0

Oto z jakiej tabeli robię selecta:

DOK  | proc_VAT | netto | brutto
-----+----------+-------+--------
NC/1 |    0     |  100  |   100
NC/2 |    7     |  90   |   97
NC/3 |    0     |  100  |   100
NC/4 |    22    |  522  |   633
NC/5 |    zw    |  233  |   233   

Widzimy tutaj 4 różne stawki VAT.
Muszę wyświetlić sumę i ilość dokumentów z VATem 0, 7, 22 i zw
I to robię w 4 podzapytanich. Ale jeśli ktoś doda kolejną stawkę VAT ?
Albo jeśli będą tylko 2 różne stawki ?
Nie potrzebuję gotowca. Wystarczy mi koncepcja, jak sprawdzić ilość różnych stawek VAT (np. DISTINCT) i tyle kolumn wyświetlić.

0

Zapomniałem dodać że wynik chcę otrzymać w takiej formie:

Vat_0 | Vat_7 | Vat_22 | zw
------+-------+--------+----
   2  |  1    |    1   |  1
0

hmmm...
jak chcesz wiedziec ile masz stawek wystarczy:
select count(distinct proc_Vat) from tabela;
no ale sama ilość to moim zdaniem nic Ci nie pomoże, bo musisz wiedzieć jakie, już lepiej byłoby zapytać:
select distinct proc_Vat from tabela;
wypisze Ci w kolejnych wierszach te stawki, a ilosc wierszy = ilosc stawek

Ja zapewne zapytałabym:
SELECT proc_VAT, COUNT(*), SUM(netto), SUM(brutto) FROM tabela GROUP BY proc_VAT;
pierwsza kolumna=stawka, druga=liczba pozycji dla stawki, trzecia=suma netto dla stawki, czwarta=suma brutto dla stawki;
liczba zwroconych wierszy=liczba stawek

No, ale Ty nie chcesz gotowych rozwiązań, więc pewnie sam coś wymyślisz ;)

P.S. no po tym drugim poscie juz widze co chcesz osiagnąc, ale co to ma za cel to juz pojecia nie mam, i powiem szczerze, ze nie wiem czy jest mozliwosc osiągnięcia zmiennej liczby kolumn, w dodatku z nazwami wyciąganymi z rekordów, może Misiekd zna jakiś sposób, z tego co widze ma większe pojęcie, ja tu odpadam :P

0

Gdybym był użytkownikiem programu, to bym wolał otrzymać informację w postaci:
VAT_0 | VAT_3 | VAT_7 | VAT_22 | ZW

0      |      0     |     5      |      11      |   0

tzn. ilość kolumn jest stała i równa ilości zarejestrowanych stawek (pewnie też trzymanych w jakiejś tabel).

0

no tak, ale u Pele2 ilosc kolumn nie jest stała i nie wiadomo jakie maja byc stawki, co za tym idzie nazwy kolumn...
zrobic jedno zapytanie wyciagające ilosc i nazwy stawek, i W ZALEZNOSCI OD WYNIKU drugie robiące taką tabele to nie byloby trudno, ale jak to w jednym zapytaniu zrobic to nie mam pojecia

0

Ja zrozumiałem, że dwa kolejne zapytania nie są złe. Zła jest dopiero nieustalona ilość zapytań.

0
  1. zapytanie Ilo i "ręczne" przepisanie do np. stringgrida tak jak się chce
  2. jedno zapytanie o rodzaj stawek + "w locie" na podstawie pierwszego zapytania zbudowanie docelowego zapytania o stawki

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