Jump to content

winscheil

Members
  • Gesamte Inhalte

    5
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von winscheil

  1. 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?

  2. 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?

  3. 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?

  4. 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?

  5. 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?

×
×
  • Neu erstellen...