Pytanie : Tworzyć Pivot Raport w Wyrocznia Wersja 10g SQL

Pivot od trzy iść zapytanie/stołowy dane - okres/język/count_of
Using Wyrocznia 10g
Chcieć Skrzynka Oświadczenie gdy to być szablon dla wiele inny reports
11g mieć cudowny pivot funkcja - ale my mieć 10g więc z szczęście there
Także ref kursor - iść tam!
W Ten Sposób tutaj być Wyrocznia wzorcowy oświadczenie - "prawie pracować "
Mój teraźniejszy Biblia że dowodzony tutaj być jako follows
http://technology.amis.nl/ blog/300/pivoting-in-sql-using-the-10g-model-clause
Che dostawać dobrze na the drogowy
Ale am sprawnie the przyczyna the problem że the zapytanie (sprawnie) być oddawanie zeros
Pociągać the wymiar, rozdział i wciąż play
Pomoc dużo appreciated
(1):
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
drop stołowy myChecks czystka;
tworzyć stołowy myChecks (
 Okres data
, Język VARCHAR2 (20)
, count_of LICZBA)
kompres nologging;

wszywka w myChecks wartość (to_date (20100702, "yyyymmdd "), "Brazylijski Portugalczyk", 8);
wszywka w myChecks wartość (to_date (20100702, "yyyymmdd "), "Bulgarian", 1);
wszywka w myChecks wartość (to_date (20100702, "yyyymmdd "), "Chińczyk", 3);
wszywka w myChecks wartość (to_date (20100702, "yyyymmdd "), "Duński", 1);
wszywka w myChecks wartość (to_date (20100702, "yyyymmdd "), "Holender", 4);
wszywka w myChecks wartość (to_date (20100702, "yyyymmdd "), "Angielszczyzna, 85);
wszywka w myChecks wartość (to_date (20100702, "yyyymmdd "), "Fiński", 2);
wszywka w myChecks wartość (to_date (20100702, "yyyymmdd "), "Francuz", 4);
wszywka w myChecks wartość (to_date (20100702, "yyyymmdd "), "Niemiec", 51);
wszywka w myChecks wartość (to_date (20100702, "yyyymmdd "), "Grek", 3);
popełniać;

wybiórka * od myChecks;

/*
Źródło dane łatwy widok
OKRES JĘZYK COUNT_OF
--------- -------------------- ----------
02-JUL-10 Brazylijski Portugalczyk 8
02-JUL-10 Bulgarian (1)
02-JUL-10 Chińczyk 3
02-JUL-10 Duński (1)
02-JUL-10 Holender 4
02-JUL-10 Angielszczyzna 85
02-JUL-10 Fiński 2
02-JUL-10 Francuz 4
02-JUL-10 Niemiec 51
02-JUL-10 Grek 3
*


/* Główny Pivot Zapytanie *
wybrany okres, Niemiec, Francuz, Hiszpańszczyzna, Holender
 , Włoszczyzna, Szwedzi, Grek, Rosjanin, Portugalczyk,
Duński, SimplifiedChinese, Chińczyk
  od myChecks
  model IGNOROWAĆ NAV unikalny przerzedzać odniesienie
  powrót uaktualniony rząd
  rozdział (Okres)
  wymiar (Język)
  miara ((0) count_of
     , (0) Chińczyk, (0) Duński, (0) Holender, (0) Francuz 
     , (0) Niemiec, (0) Grek, (0) Włoszczyzna  
     , (0) Portugalczyk, (0) Rosjanin, (0) SimplifiedChinese 
     , (0) Hiszpańszczyzna, (0) Szwedzi)
  reguła
  (
      Chińczyk [(0)] = count_of [(1)]
     , Duński [(0)] = count_of [2]
     , Holender [(0)] = count_of [3]
     , Francuz [(0)] = count_of [4]
     , Niemiec [(0)] = count_of [5]
     , Grek [(0)] = count_of [6]
     , Włoszczyzna [(0)] = count_of [7]
     , Portugalczyk [(0)] = count_of [8]
     , Rosjanin [(0)] = count_of [9]
     , SimplifiedChinese [(0)] = count_of [10]
     , Hiszpańszczyzna [(0)] = count_of [11]
     , Szwedzi [(0)] = count_of [12]
  )
  rozkaz (1) desc;
/* Rezultat rezultat   
OKRES NIEMIECKI FRANCUSKI HISZPAŃSKI HOLENDERSKI WŁOSKI SZWEDZKI GRECKI ROSYJSKI PORTUGALSKI DUŃSKI SIMPLIFIEDCHINESE CHIŃCZYK
--------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------------- ----------
02-JUL-10 (0) (0) (0) (0) (0) (0) (0) (0) (0) (0) (0) (0)
*

opadowy stołowy myChecks czystka;

Odpowiedź : Tworzyć Pivot Raport w Wyrocznia Wersja 10g SQL

Cześć,
Najpierw wszystko, gratulacje, ty provided zupełny precedens sądowy.

Tam  być 2 punkt:
1)  "miara ((0) count_of" wyznaczać (0) count_of w ten sposób ty loose the wartość
2) w the reguła język być inside [] musieć językowy wartość (ponieważ wymiar język)

W Ten Sposób tutaj być the modyfikacja:

  miara (count_of
     , (0) Chińczyk, (0) Duński, (0) Holender, (0) Francuz
     , (0) Niemiec, (0) Grek, (0) Włoszczyzna
     , (0) Portugalczyk, (0) Rosjanin, (0) SimplifiedChinese
     , (0) Hiszpańszczyzna, (0) Szwedzi)
  reguła
  (
      Chińczyk ["*"] = count_of ["Chińczyk"]
     , Duński ["*"] = count_of ["Duński"]
     , Holender ["*"] = count_of ["Holender"]
     , Francuz ["*"] = count_of ["Francuz"]


Zauważać że I zamieniać (0) "*" ponieważ ono być liczba ale językowy imię ty wyznaczać the linia który cumulates wszystkie język. Ty móc móc ty chcieć gdy ty mieć ono w the wybiórka, ale nie liczba.

I zgadywać ty myśleć zgadywać rząd zrobić z liczba. Wymiar być the skrzynka, odnosić się the wymiar.

Uwzględnienie,
Franck.
Inne rozwiązania  
 
programming4us programming4us