cancel
Showing results for 
Search instead for 
Did you mean: 

Zeilennummerierung in SQL Query für Formierte Suche

Former Member
0 Kudos

Guten Nachmittag,

wir haben mehrere formatierte Suchen im System die den Kollgen eine schnelle Übersicht über verschiedene Gegenheiten geben soll.

Bei einigen FMS wäre jedoch eine Zeilennummierung sinnvoll, da hier auf einen Blick die Menge der Zeilen abgelesen werden könnte.

(wir übertragen mittels B1i Kundenaufträge aus einem Vertriebsystem in 2 Produktionssysteme, wo zuvor die Artikel entsprechend der Herstell-Quelle Firma 1 / Firma 2 aufgeteilt werden.)

Der Vertriebler würde somit die Möglichkeit haben zu prüfen, ob sein erstellter Kundenauftrag aus 18 Positionen gesamt (4 für Firma 1 / 14 für Firma 2)

auch vollständig übertragen wurde, ohne alle Zeilen zählen zu müssen.

Hier ist der Query der FMS:

SELECT  T2.Linestatus as 'Zeilenstatus',T0.[DocNum] as 'AB-PLUS', T1.DocNum, T2.Itemcode,

T1.Docstatus as 'Status Beleg', T1.Confirmed, T2.[Dscription] as 'Bezeichnung',

T2.Quantity as 'Menge AB', T2.openQty as 'Offene Menge'

FROM ORDR T0 

INNER JOIN [Server1].DB_LIVE.DBO.ORDR T1 ON T0.DocNum = T1.U_BaseDocNum

INNER JOIN [Server1].DB_LIVE.DBO.RDR1 T2 on T1.DocEntry = T2.DocEntry

where T0.DocNum = $[$8.0.0]

and T2.TreeType <> 'I'

UNION ALL

SELECT  T2.Linestatus as 'Zeilenstatus',T0.[DocNum] as 'AB-PLUS', T1.DocNum, T2.Itemcode,

T1.Docstatus as 'Status Beleg', T1.Confirmed, T2.[Dscription] as 'Bezeichnung',

T2.Quantity as 'Menge AB', T2.openQty as 'Offene Menge'

FROM ORDR T0 

INNER JOIN [Server2].GO_LIVE_DB.DBO.ORDR T1 ON T0.DocNum = T1.U_BaseDocNum

INNER JOIN [Server2].GO_LIVE_DB.DBO.RDR1 T2 on T1.DocEntry = T2.DocEntry

where T0.DocNum = $[$8.0.0]

and T2.TreeType <> 'I'

Hat jemand eine Idee ?

Vielen Dank für Eure Wissenswerte.

Gruß

Markus

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hallo Markus,

ich habe dein SQL-Befehl nicht genauer angeschaut, aber meiner Meinung nach kannst du es  mit folgendenen Befehl lösen

select row_number() over(order by cardname) as row , cardcode from opor

Gruß

Ronny

Answers (1)

Answers (1)

Former Member
0 Kudos

Hallo Markus,

stimme Ronny zu, dies ist der richtige Ansatz. In Deinem Fall wirst du aber das problem haben mit der UNION - Abfrage. Daher würde ich zusätzlich noch eine Temp-Tabelle als Zwischenschritt wählen.

Beispiel:

if object_id('tempdb..#temp','U') is not null drop table #temp;

Select CardCode, CardName into #temp from ocrd where cardtype='C'

UNION ALL

Select CardCode, CardName from ocrd where cardcode <> 'C'

select row_number() over(order by CardCode), cardcode, cardname from #temp