-
SQL
HAllo zusammen,
ich habe ein SQL Problem . Und zwar will ich von der folgenden Tabelle
folgende Felder
TABLENAME + Schlüssel , ANLAGEUSER + CreationDate + und Creation Time (MAX DATUM+ ZEIT) und Anlageuser as letzteraenderer und das letzte Änderungsdatum + Uhrzeit (MIN DATUM + Uhrzeit) Also MIN MAX Wert.
Das Problem ist das die Zeit und das Datum 2 Felder sind (Das muss auch so bleiben )
Bei Max Datum / Max Zeit nimmer er die falsche Uhrzeit .
Wenn ich nach den Feldern ART / TAbellenname / Schlüssel / Tabllenfeld groupiere bekomme ich zwar dann das richtige Max Datum + Uhrzeit aber der User fehlt .
ART |
TableName |
SCHLüssel |
TABELLENFELD |
ANLAGEUSER |
CreationDate |
CreationTime |
ARTIKEL |
TABELEXXY |
815 |
KEY |
USER1 |
20180111 |
114533 |
ARTIKEL |
TABELEXXY |
815 |
FELD1 |
USER2 |
20180307 |
52515 |
ARTIKEL |
TABELEXXY |
815 |
FELD2 |
USER2 |
20180307 |
52908 |
ARTIKEL |
TABELEXXY |
815 |
FELD3 |
USER2 |
20180319 |
102217 |
ARTIKEL |
TABELEXXY |
815 |
FELD4 |
USER2 |
20180403 |
94713 |
ARTIKEL |
TABELEXXY |
815 |
FELD5 |
USER2 |
20180403 |
94713 |
ARTIKEL |
TABELEXXY |
815 |
FELD6 |
USER2 |
20180403 |
94713 |
ARTIKEL |
TABELEXXY |
815 |
FELD7 |
USER2 |
20180403 |
94713 |
ARTIKEL |
TABELEXXY |
815 |
FELD8 |
USER2 |
20180906 |
90427 |
Kunde |
TABAAAAA |
66666 |
FELD9 |
USER2 |
20180910 |
20320 |
Kunde |
TABELEXXY |
33333 |
FELD10 |
USER2 |
20180917 |
44720 |
Kunde |
TABELEXXY |
55555 |
FELD11 |
USER2 |
20180917 |
35800 |
Kunde |
TABELEXXY |
66666 |
FELD13 |
USER2 |
20181205 |
12847 |
Kunde |
TABELEXXY |
66666 |
FELD13 |
USER2 |
20181206 |
12925 |
ARTIKEL |
TABELEXXY |
815 |
FELD14 |
USER2 |
20181206 |
12925 |
ARTIKEL |
TABELEXXY |
815 |
FELD15 |
USER2 |
20181207 |
33331 |
ARTIKEL |
TABELEXXY |
815 |
FELD3 |
USER2 |
20181207 |
33331 |
ARTIKEL |
TABELEXXY |
815 |
FELD17 |
USER3 |
20180122 |
20456 |
ARTIKEL |
TABELEXXY |
815 |
FELD18 |
USER3 |
20180122 |
20456 |
ARTIKEL |
TABELEXXY |
815 |
FELD19 |
USER3 |
20180122 |
20456 |
ARTIKEL |
TABELEXXY |
815 |
FELD20 |
USER3 |
20180122 |
21037 |
ARTIKEL |
TABELEXXY |
815 |
FELD21 |
USER3 |
20180122 |
21037 |
ARTIKEL |
TABELEXXY |
815 |
FELD22 |
USER2 |
20180215 |
104919 |
ARTIKEL |
TABELEXXY |
815 |
FELD23 |
USER2 |
20180215 |
104919 |
ARTIKEL |
TABELEXXY |
815 |
FELD24 |
USER2 |
20180220 |
92721 |
ARTIKEL |
TABELEXXY |
815 |
FELD25 |
USER2 |
20180220 |
92721 |
ARTIKEL |
TABELEXXY |
815 |
FELD3 |
USER2 |
20180220 |
110530 |
ARTIKEL |
TABELEXXY |
815 |
FELD27 |
USER2 |
20180221 |
82906 |
ARTIKEL |
TABELEXXY |
815 |
FELD28 |
USER2 |
20180221 |
21446 |
ARTIKEL |
TABELEXXY |
815 |
FELD29 |
USER2 |
20180307 |
43744 |
ARTIKEL |
TABELEXXY |
815 |
FELD30 |
USER2 |
20180307 |
45645 |
ARTIKEL |
TABELEXXY |
815 |
FELD3 |
USER2 |
20180307 |
50113 |
ARTIKEL |
TABELEXXY |
815 |
FELD32 |
USER2 |
20180307 |
51504 |
-
Wenn du V7R3 hast (ggf. 7.2 mit irgendeinem TR):
select .... last_value(CHAR(Datum) concat char(Zeit)) over (partition by TABLENAME , Schlüssel , ANLAGEUSER order by CHAR(Datum) concat char(Zeit) desc)
from ...
Ansonsten kannst du auch eine derived Table/CTE verwenden:
select TABLENAME , Schlüssel , ANLAGEUSER, max(andat)
from (
select TABLENAME , Schlüssel , ANLAGEUSER
,CHAR(Datum) concat char(Zeit) as andat
from mytable
) hugo
group by TABLENAME , Schlüssel , ANLAGEUSER
-
Nein ich kann keine CTE's etc verwenden und ich brauche das Datum und die Zeit in 2 verschiedenen Feldern . Das macht ja das ganze so kompliziert .. Oder ich seh vor lauter Wald die Bäume nicht ..
-
warum nicht max(datum*1000000+zeit)
-
du kannst die zwei Felder zu einem timestamp zusammenfassen (timestamp ( datumsfeld, zeitfeld) und dann danch gruppieren, oder was immer du willst. Auch die kleinste Zeit zum größten Datium geht, dann muss man die Zeit vom Datum abziehen (timestamp(datumsfeld) - hour(zeitfeld) hours
- minute(zeitfeld) minutes - second(zeitfeld) seconds) dann das maximum davon.
D*B
-
Mir ist zwar nicht klar warum Du weder Common Table Expressions, noch verschachtelte Sub-Selects verwenden kannst.
Wenn ich das richtig verstanden habe, willst Du zwar den Maximal bzw. den Minimal-Wert der zusammengefassten Datums- und Zeit-Werte, aber dennoch 2 Spalten ausgeben, ... und das ohne CTE.
Das Problem bei Max() und Min() ist, dass Du nur einen Wert angeben kannst, du aber dennoch 2 Spalten möchtest und das ohne CTE!
Dann musst Du beide Werte zusammenfassen, und dann den Maximal- bzw. den Minimal-Wert wieder auseinanderdröseln. Wirklich nicht schön, aber so sollte es gehen:
Code:
Select Guppierungskriterien,
Dec(Left( Max(Digits(CreationDate) concat Digits(CreationTime)), 8), 8, 0) MaxDate,
Dec(Right(Max(Digits(CreationDate) concat Digits(CreationTime)), 6), 6, 0) MaxTime,
Dec(Left( Min(Digits(CreationDate) concat Digits(CreationTime)), 8), 8, 0) MinDate,
Dec(Right(Min(Digits(CreationDate) concat Digits(CreationTime)), 6), 6, 0) MinTime,
from YourSchema.YourTable
Group By Gruppierungskriterien
Order BY ...;
Birgitta
-
Natürlich geht das auch ohne CTE mit Derived Table.
select TABLENAME , Schlüssel , ANLAGEUSER, substr(andat, 1, 10), substr(andat, 11, 8)
from (
select TABLENAME , Schlüssel , ANLAGEUSER, max(andat) as andat
from (
select TABLENAME , Schlüssel , ANLAGEUSER
,CHAR(Datum) concat char(Zeit) as andat
from mytable
) hugo
group by TABLENAME , Schlüssel , ANLAGEUSER
) hugo2
Wenn deine Felder vom Typ DATE und TIME sind und du die TIMESTAMP-Funktion nimmst wie oben beschrieben, kannst du die Werte auch wieder per Date(andat), Time(Andat) splitten.
Eine CTE ist nur eine andere Schreibweise.
-
... besser weil einfacher ist ohnehin eine View!!!
D*B
und PX (pleipt xund)
-
Jein.
CPYTOIMPF verlangt eine TABLE/PF.
-
Zitat von Fuerchau
Jein.
CPYTOIMPF verlangt eine TABLE/PF.
... von CPYTOIMPF habe ich in der Frage nix gesehen - und überdies geht das bei mir auch mit einer View.
-
Stimmt! Wieder was gelernt;-).
Außerdem habe ich da 2 verschiedene Threads vermischt. Kann ja schon mal passieren.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks