-
SQL - eindeutige ID für Satz ?
Hallo,
vielleicht kann mir jemand helfen.
Ich führe unten stehenden SQL mit einem GROUP BY aus.
Nun möchte ich zusätzlich noch eine eindeutige ID (zahl, 5,0) für jede Ergebniszeile ausgeben.
Gibts hierfür einen SQL Befehl, Funktion etc... ???
curRow, curId oder so.....?
SELECT
count(*) as anzahl, abrabrtext FROM abrechvgl
join kbeleg on ABRKBEKY = kbelfdnr
where kbewanr = 18800 and kbevnr = 1
group by abrabrtext
order by 1 desc
sim
-
SQL
Versuchen Sie es doch einmal mit :
SELECT decimal(rrn(abrechvgl),5,0) as rowID, count(*) as anzahl, abrabrtext FROM abrechvgl
join kbeleg on ABRKBEKY = kbelfdnr
where kbewanr = 18800 and kbevnr = 1
group by 1,2
order by 2 desc
RRN(TABLE) : Gibt die Relative Datensatz Nummer aus
-
Das gibt allerdings einen SQL-Fehler, wenn die RRN > 99999 wird !
Wofür soll diese ID denn gut sein ?
-
Hallo Sim,
so ganz einfach ist das nicht!
Es gibt keine Funktion, die einfach eingebunden werden kann.
Die relative Satz-Nr. liefert zwar eine eindeutige Kennung, ist jedoch nicht unbedingt fortlaufend.
Das heisst jedoch nicht, dass es nicht möglich ist.
Wenn ich mich mit Deinen Feld- und Datei-Namen nicht verschrieben habe, sollte das folgende SQL-Statement funktionnieren:
PHP-Code:
with x as (select count(*) as Anz, ABRABRTEXT as Text
from ABRECHVGL a join KBELEG b
on a.ABRKBEKY = KBELFDNR
where KBEWANR = 18800 and KBEVNR = 1
group by ABRABRTEXT),
y as (select Anz as yAnz, Text as yText,
digits(Anz) concat Text as yKey
from x),
z as (select Anz as zAnz, Text as zText,
digits(Anz) concat Text as zKey
from x)
select yAnz, yText, count(zKey) as Zaehler
from y inner join z
on yKey >= zKey
group by yAnz, yText
Vielleicht gibt es ja noch einfachere Lösungen
-
@all
erstmal vielen dank für die hilfe. ich war schon dabei den
umweg über eine temporäre tabelle zu machen.
@Markus Reimers
Das mit der relativen Satznummer hatte ich schon versucht. Funktioniert aber leider nicht.
@Fuerchau
Die ID kennzeichnet alle Kunden einer Gruppe. abrabrtext ist zwar
schon eindeutig aber als varchar feld nicht unbedingt für die weitere verarbeitung zu gebrauchen ;-)
@B.Hauser
dein SQL funktioniert optimal. genau das was ich gebraucht habe.
thx, sim
-
Hallo Birgitta,
eine kurze Erklärung zum SQL wäre nicht schlecht.
danke. sim
Zitat von B.Hauser
Hallo Sim,
so ganz einfach ist das nicht!
Es gibt keine Funktion, die einfach eingebunden werden kann.
Die relative Satz-Nr. liefert zwar eine eindeutige Kennung, ist jedoch nicht unbedingt fortlaufend.
Das heisst jedoch nicht, dass es nicht möglich ist.
Wenn ich mich mit Deinen Feld- und Datei-Namen nicht verschrieben habe, sollte das folgende SQL-Statement funktionnieren:
PHP-Code:
with x as (select count(*) as Anz, ABRABRTEXT as Text
from ABRECHVGL a join KBELEG b
on a.ABRKBEKY = KBELFDNR
where KBEWANR = 18800 and KBEVNR = 1
group by ABRABRTEXT),
y as (select Anz as yAnz, Text as yText,
digits(Anz) concat Text as yKey
from x),
z as (select Anz as zAnz, Text as zText,
digits(Anz) concat Text as zKey
from x)
select yAnz, yText, count(zKey) as Zaehler
from y inner join z
on yKey >= zKey
group by yAnz, yText
Vielleicht gibt es ja noch einfachere Lösungen
-
Zitat von sim
Hallo Birgitta,
eine kurze Erklärung zum SQL wäre nicht schlecht.
danke. sim
Ein komplettes Select-Statement besteht aus zwei Teilen:
1. Common Table Expressions (With ...)
2. Fullselect --> das eigentliche Select-Statement
Common Table Expressions (CTE) ermöglichen einem komplexe SQL-Statements besser zu strukturieren. Mit CTEs können temporäre Views, die nur für dieses eine Select-Statement gelten definiert werden. Wie bei anderen Views können auch diese temporären Views in weiteren temporären Views verwendet werden.
In meinem Beispiel habe ich Dein ursprüngliches Select-Statement als CTE definiert, um das Ergebnis mit neuen Feld-Namen einfacher verwenden zu können.
Anschliessend habe ich aus dieser CTE zwei weitere Views mit dem selben Aufbau und einem zusätzlichen Schlüssel-Feld, das für die folgenden Verknüpfungen erforderlich ist, definiert.
Nun zum eigentlichen Select-Statement. Hier wird die Original-Abfrage mit sich selbst verknüpft. Durch die >= Verknüpfung wird jeweils nur die Anzahl der Zeilen bis zum entsprechenden Schlüssel-Wert ermittelt.
Birgitta
-
Laufende Nr. im SQL / Insert in andere Tabelle
Zitat von B.Hauser
Hallo Sim,
so ganz einfach ist das nicht!
Es gibt keine Funktion, die einfach eingebunden werden kann.
Die relative Satz-Nr. liefert zwar eine eindeutige Kennung, ist jedoch nicht unbedingt fortlaufend.
Das heisst jedoch nicht, dass es nicht möglich ist.
Wenn ich mich mit Deinen Feld- und Datei-Namen nicht verschrieben habe, sollte das folgende SQL-Statement funktionnieren:
PHP-Code:
with x as (select count(*) as Anz, ABRABRTEXT as Text
from ABRECHVGL a join KBELEG b
on a.ABRKBEKY = KBELFDNR
where KBEWANR = 18800 and KBEVNR = 1
group by ABRABRTEXT),
y as (select Anz as yAnz, Text as yText,
digits(Anz) concat Text as yKey
from x),
z as (select Anz as zAnz, Text as zText,
digits(Anz) concat Text as zKey
from x)
select yAnz, yText, count(zKey) as Zaehler
from y inner join z
on yKey >= zKey
group by yAnz, yText
Vielleicht gibt es ja noch einfachere Lösungen
Hallo Forum,
Der obige "Trick" kam genau zur richtigen Zeit und funktioniert
prima.
ABER: Wenn ich das Ergebnis nicht als Resultset sondern in
eine Tabelle schreiben möchte (also die Zeile "Insert Into lib/File" als erste Zeile der letzten SQL-Anweisung stelle) bekomme ich
die Fehlermeldung "Schlüsselwort INSERT nicht erwartet. Gültige Token: ( SELECT.
Was mache ich falsch?
Danke schon mal für die Mühen.
-
Zitat von Unregistriert
Hallo Forum,
Der obige "Trick" kam genau zur richtigen Zeit und funktioniert
prima.
ABER: Wenn ich das Ergebnis nicht als Resultset sondern in
eine Tabelle schreiben möchte (also die Zeile "Insert Into lib/File" als erste Zeile der letzten SQL-Anweisung stelle) bekomme ich
die Fehlermeldung "Schlüsselwort INSERT nicht erwartet. Gültige Token: ( SELECT.
Was mache ich falsch?
Danke schon mal für die Mühen.
Commont Table Expressions gehören zum SELECT statement und zu keinem anderen Statement.
Ein vollständiges SELECT-Statement besteht aus Common Table Expressions und einem Full-Select.
Wenn Du also Sätze in eine bestehende Datei einfügen willst,
musst du das komplette Select-Statement (mit allen CTEs) innerhalb des Inserts angeben:
Beispiel:
PHP-Code:
insert into MySchema/MyTable
with x as (select count(*) as Anz, ABRABRTEXT as Text
from ABRECHVGL a join KBELEG b
on a.ABRKBEKY = KBELFDNR
where KBEWANR = 18800 and KBEVNR = 1
group by ABRABRTEXT),
y as (select Anz as yAnz, Text as yText,
digits(Anz) concat Text as yKey
from x),
z as (select Anz as zAnz, Text as zText,
digits(Anz) concat Text as zKey
from x)
select yAnz, yText, count(zKey) as Zaehler
from y inner join z
on yKey >= zKey
group by yAnz, yText
Birgitta
-
Zitat von B.Hauser
Commont Table Expressions gehören zum SELECT statement und zu keinem anderen Statement.
Ein vollständiges SELECT-Statement besteht aus Common Table Expressions und einem Full-Select.
Wenn Du also Sätze in eine bestehende Datei einfügen willst,
musst du das komplette Select-Statement (mit allen CTEs) innerhalb des Inserts angeben:
Beispiel:
PHP-Code:
insert into MySchema/MyTable
with x as (select count(*) as Anz, ABRABRTEXT as Text
from ABRECHVGL a join KBELEG b
on a.ABRKBEKY = KBELFDNR
where KBEWANR = 18800 and KBEVNR = 1
group by ABRABRTEXT),
y as (select Anz as yAnz, Text as yText,
digits(Anz) concat Text as yKey
from x),
z as (select Anz as zAnz, Text as zText,
digits(Anz) concat Text as zKey
from x)
select yAnz, yText, count(zKey) as Zaehler
from y inner join z
on yKey >= zKey
group by yAnz, yText
Birgitta
Vielen Dank, hat mich wieder ein großes Stück weiter gebracht.
Similar Threads
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 14:53
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 14:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 01-12-05, 18:12
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