Ich habe eine Abfrage, die Verbrauchsdaten bis zu einer bestimmten Datetime @end
aggregiert. Allerdings muss ich auch den letzten Wert einer anderen Spalte, Mitarbeiter, zurückgeben, wenn die Zeilen nach trans_num
(Transaktionsnummer) sortiert sind. Wie mache ich das?Wie gebe ich den letzten Wert einer Spalte beim Summieren einer anderen Spalte zurück?
Was ich bisher versucht habe: Ich habe versucht, SELECT Top 1
zu verwenden, aber das wird mir nicht der letzte Mitarbeiter für jeden Artikel geben. Die Tabelle hat trans_num
als Primärschlüssel und alle anderen Felder sind nicht eindeutig. Ich kann andere Informationen nach Bedarf bereitstellen.
declare @start datetime2 = '7/17/17 05:00:00 AM'
declare @end datetime2 = '7/18/17 05:00:00 AM'
declare @job varchar(12) = 'W000017154'
declare @suf int = 29
select
t.item
, i.description
, sum(t.qty) as sumqty
, t.ref_num
, t.ref_line_suf
, (select top 1
t.emp_num
from
isw_lptrans as t
where
t.ref_num = @job
and t.ref_line_suf = @suf
and t.createdate between @start and @end
order by
trans_num desc
) as lastemp
from
isw_lptrans as t
inner join item as i on i.item = t.item
where
t.trans_type = 'I'
and t.createdate between @start and @end
and t.ref_num = @job
and t.ref_line_suf = @suf
group by
t.item
, i.description
, t.ref_num
, t.ref_line_suf
Screenshot der Zeilen: Die markierte Linie zeigt die letzte Zeile, wenn die @end
Datumzeit angegeben wird. Also muss ich die qty
Spalte summieren, aber dann auch den letzten Wert in emp_num
(Mitarbeiterspalte) zurückgeben. In der folgenden Abbildung sollte die Gesamtmenge also 1000 sein, während TG43499
als letzter Wert der Spalte emp_num
zurückgegeben wird.
Ach, verflixt, ich war für eine Lösung der Hoffnung, die entweder eine temporäre Tabelle oder einen Tabellenausdruck nicht genutzt. Mein endloser Optimismus dachte, dass es möglich wäre, alles innerhalb derselben SELECT-Anweisung zu tun. Aber der schwierige Teil ist, dass ich nicht die 'LAST_VALUE()' -Funktion habe, die in neueren Versionen von SQL Server existiert. Trotzdem danke! – DarthVoid