Group BY - problem z utworzeniem tabeli

Odpowiedz Nowy wątek
2018-03-13 16:30
0

Witam,
zakłam nowy watek ponieważ nigdzie nie znalazłem odpowiedzi, podobne problemy się już pojawiały ale takiego samego nie znalazłem i nie mogę sobie poradzić. Mam sobie takiego SQL'a :

SELCET
TO_CHAR(TERMIN_PLATNOSCI_UZUP,'YYYY-MM' )MP,
SUM(KWOTA)
FROM tabela.danych
GRUP BY
TO_CHAR(TERMIN_PLATNOSCI_UZUP,'YYYY-MM' )MP

Tu wszystko jest pięknie dane grupują się jak należy ale chciałbym wynik dostawać w postaci utworzonej tabelki wiec robię tak:

CREATE TABLE xyz COMPRESS AS
SELCET
TO_CHAR(TERMIN_PLATNOSCI_UZUP,'YYYY-MM' )MP,
SUM(KWOTA)
FROM tabela.danych
GRUP BY
TO_CHAR(TERMIN_PLATNOSCI_UZUP,'YYYY-MM' )MP

Wyrzuca mi błąd:
00933. 00000 - "SQL command not properly ended" (jak alias kolumny jest po funkcji grupującej u mnie MP)
00998. 00000 - "must name this expression with a column alias" (jak nie ma aliasu kolumny TO_CHAR jest po funkcji grupującej u mnie MP)

Macie jakiś pomysł ? Klient: ORACLE SQL Developer

edytowany 1x, ostatnio: k.kowal99, 2018-03-13 16:31

Pozostało 580 znaków

2018-03-13 16:44
0

Po to zastosowales alias żeby z niego nie skorzystać?;)

Pozostało 580 znaków

2018-03-13 16:47
0
kate87 napisał(a):

Po to zastosowales alias żeby z niego nie skorzystać?;)

:) Wiem jak to wygląda ale jak stosuje alias po grupowaniu to z kolei wyrzuca SQL Error: ORA-00904: "MP": niepoprawny identyfikator. Aliasy w Oracel SQL nigdy nie zachowują się tak jak bym tego chciał :(

Chyba, ze jest jakiś inny sposób na nadanie aliasu niż KOLUMNA_1 AS KOLUMNA 1

edytowany 1x, ostatnio: k.kowal99, 2018-03-13 16:48

Pozostało 580 znaków

2018-03-13 16:54
2

Nie jestem specem od racle, ale patrząc na komunikaty to:

CREATE TABLE xyz COMPRESS AS
SELECT
TO_CHAR(TERMIN_PLATNOSCI_UZUP,'YYYY-MM' )MP,
SUM(KWOTA) sumkwota
FROM tabela.danych
GRUP BY
TO_CHAR(TERMIN_PLATNOSCI_UZUP,'YYYY-MM' )

nie nazwales kolumny sum(kwota) i alias nie jest potrzebny

edytowany 1x, ostatnio: Panczo, 2018-03-13 16:55

Pozostało 580 znaków

2018-03-13 16:55

Z Group by wytnij to MP na końcu.

Pozostało 580 znaków

2018-03-13 16:56
0

No Jasne ! Dzięki

Pozostało 580 znaków

2018-03-13 18:14
0

Jeżeli nie podoba Ci się powielanie to_char, to możesz tak:

    CREATE TABLE xyz COMPRESS AS
    WITH podzap AS (
      SELCET TO_CHAR(TERMIN_PLATNOSCI_UZUP,'YYYY-MM' ) MP, KWOTA
      FROM tabela.danych
    )
    SELECT MP, SUM(KWOTA) FROM podzap
    GRUP BY MP

(Zachowano oryginalną pisownię autora) :)

http://sqlfiddle.com/#!4/cce45/19/2


Przeważnie ignoruję niezarejestrowanych użytkowników.
edytowany 1x, ostatnio: jarekczek, 2018-03-13 18:15

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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