winscheil
-
Gesamte Inhalte
5 -
Registriert seit
-
Letzter Besuch
Beiträge erstellt von winscheil
-
-
Hallo,
ich habe folgende Konstellation bzw. Datenbestand:
Mitarbeiter Unterbrechungsgrund Datum
Huber Urlaub 16.03.2023
Huber Urlaub 17.03.2023
Huber Urlaub 03.04.2023
Huber Urlaub 04.04.2023
Maier krank 16.03.2023
Maier Urlaub 17.03.2023
Müller krank 16.03.2023
Müller Urlaub 25.05.2023
Müller Urlaub 26.05.2023
Als Ergebnis brauch ich den letzten Abwesenheitstag der aktuellen Abwesenheit (bis er wieder anwesend ist...).
Und nicht den letzten eingetragenen und geplanten Abwesenheitstag.
Ergebnis:
Huber Urlaub 17.03.2023
Maier Urlaub 17.03.2023 --> der Urlaub folgst ohne Unterbrechung auf den Kranktag, daher ist der auch noch dabei
Müller krank 16.03.2023
ich bekomme es ohne Probleme hin, den letzten Abwesenheitstag auszugeben.
select Top 1 Mitarbeiter, Unterbrechungsgrund, Datum from Tabelle order by Datum asc
Aber wie mache ich es, dass er stoppt, wenn die Abwesenheit unterbricht?
-
Hallo,
ich möchte eine Abfrage bauen, die mir aus einer Tabelle immer die 3 höchsten Werte jedes Monats ausgibt.
Datenaufbau:
Monat Wert
01 550
01 200
01 320
01 600
01 120
02 800
02 410
02 150
02 590
02 730
...
Die Ausgabe soll dann folgendes bringen:
Monat Wert
01 600
01 550
01 320
02 800
02 730
02 590
...
Ich kann zwar mit Top 3 die drei höchsten Werte einer ganzen Tabelle ausgeben.
Aber ich weiß nicht, wie ich die Wiederholung für jeden Monat umsetzen kann.Zur Info. Es ist MSSQL. Limit geht also nicht
Kann mir da jemand helfen? -
Hallo,
ich habe folgende SQL Auswertung:
Artikel Grundpreis Staffelmenge Staffelpreis
ABC 20 5 18
ABC 20 50 15
ABC 20 100 12
DEF 50 50 40
XYZ 30 20 25
XYZ 30 100 20
Und bräuchte die Staffelmengen und Preise je Artikel augeteilt in Spalten in einer Zeile:
Artikel Grundpreis SM1 SP1 SM2 SP2 SM3 SP3 SM4 SP4
ABC 20 5 18 50 15 100 12 NULL NULL
DEF 50 50 40 NULL NULL NULL NULL NULL NULL
XYZ 30 20 25 100 20 NULL NULL NULL NULL
Ich hoffe, ich habe mein Problem verständlich dargestellt.
Kann mir dazu einer helfen? -
Hallo,
ich habe eine Tabelle mit folgendem Aufbau:
AUFTRAG, START_TAG, ENDE_TAG, PRO_WOCHE
ABC, 2018-05-07, 2018-09-07, 38699,19
DEF, 2018-03-05, 2018-04-27, 3215,15
XYZ, 2018-07-23, 2018-11-09, 11315,35
Da ist der Auftrag, ein Starttag, ein Endtag und der Geldwert, der Pro Woche zwischen Starttag und Endtag anfällt.
Jetzt will ich eine Abfrage machen, die mir pro Woche in dem Zeitraum zwischen Starttag und Endtag eine neue Zeile erstellt.
Ich überprüfe den Starttag, ob er kleiner gleich dem Endtag ist und erhöhe den Starttag immer um eine Woche und vergleiche dann wieder.
Solange der Starttag nach den Erhöhungen kleiner als der Endtag ist, wird eine neue Zeile pro Woche erstellt.
Bsp:
AUFTRAG, DATUM, PRO_WOCHE
ABC, 2018-05-07, 38699
ABC, 2018-05-14, 38699
ABC, 2018-05-21, 38699
...
ABC, 2018-09-03, 38699
Das habe ich so gemacht:
declare @zaehler int
set @zaehler = 0
while @zaehler <=(selectDATEDIFF(WEEK,START_TAG,ENDE_TAG) from QUELLTABELLE where AUFTRAG ='123')
BEGIN
insert into ZIELTABELLE
select AUFTRAG,DATEADD(WEEK,@zaehler, START_TAG) as DATUM, PRO_WOCHE from QUELLTABELLE where AUFTRAG ='123'
set @zaehler += 1
END
Das funktioniert jetzt für einen Eintrag der obigen Quelltabelle.
Aber ich weiß jetzt nicht, wie ich das auf die ganze Quelltabelle ausbaue, dass für alle Einträge/Zeilen in der Quelltabelle neue Einträge/Zeilen in die Zieltabelle geschrieben werden.
Ich hoffe, ich habe alles verständlich erklärt.
Kann mir da jemand helfen?
Auswertung letzte Abwesenheit
in MS SQL Server Forum
Geschrieben
Das klappt soweit sehr gut.
Ein Problem habe ich jetzt noch.
Wenn z.B. jemand diese Woche abwesend ist, z.B. krank oder Berufsschule und dann am Montag oder Mo und Di gleich wieder eine Abwesenheit hat z.B. Urlaub, dann wird mir als letzter Abwesenheitstag der Freitag ausgegeben und nicht der Montag bzw. Dienstag.
Hier das Beispiel:
create table #abwesend (mitarbeiter varchar(10), unterbrechungsgrund varchar(15), datum date)
insert into #abwesend
values
('Huber','Berufsschule','20230320'),
('Huber','Berufsschule','20230321'),
('Huber','Berufsschule','20230322'),
('Huber','Berufsschule','20230323'),
('Huber','Berufsschule','20230324'),
('Huber','Urlaub','20230327'),
('Huber','Urlaub','20230328'),
('Huber','Berufsschule','20230424'),
('Huber','Berufsschule','20230425')
DECLARE @StartDate DATE = '20230321';
...
Rest wie bisher
Ergebnis:
Mitarbeiter Unterbrechungsgrund Datum
Huber Berufsschule 2023-03-24
Eigentlich sollte da aber folgendes Ergebnis raus kommen:
Mitarbeiter Unterbrechungsgrund Datum
Huber Urlaub 2023-03-28
Was muss da noch angepasst werden?