Jump to content

MDD

Members
  • Gesamte Inhalte

    174
  • Registriert seit

  • Letzter Besuch

Letzte Besucher des Profils

4.074 Profilaufrufe

Fortschritt von MDD

Community Regular

Community Regular (8/14)

  • 10 Jahre dabei!
  • Positiver Einfluss Rare
  • Rätsel gelöst Rare
  • Erste Antwort
  • Engagiert

Neueste Abzeichen

13

Reputation in der Community

10

Beste Lösungen

  1. Also eine Kombi aus CASE wie Zahni schreibt und dem LEFT JOIN bei dem du die ArtkLEST_97 mal über deine Schlüsselkriterien, artnr + eswert (so schaut es zumindest lt diagramm aus ) und gleichzeitig über den fixen wert #Global# verknüpfst und dann per CASE den Wert vom ersten oder vom zweiten Join holst.
  2. Hallo Marco, das wäre mit einem OUTER Join zu lösen. SELECT COALESCE(T2.F2, '#GLOBAL#') FROM T1 LEFT OUTER JOIN T2 on T1.F1 = T2.F1 Falls aber das Schlüsselfeld in T2.F1 doch vorhanden ist aber kein Wert (NULL) in F2 würde ebenfalls #GLOBAL# ausgewiesen werden. Dieser Fall ist in obigen Statement nicht abgefangen und müsste gegebenenfalls entsprechend behandelt werden. Gruß MDD
  3. Auf der Seite von Microsoft wird die Verwendung erklärt. https://learn.microsoft.com/de-de/sql/relational-databases/json/json-data-sql-server?view=sql-server-ver16 Generell hat es den Vorteil, dass in einer Spalte recht flexibel die Daten abgelegt und ausgelesen werden können. Ob es für deinen Bedarf das richtige ist wirst du entscheiden können wenn du dir die Verfahrensweise reinziehst und damit rumspielst.
  4. Hallo Grundsätzlich gäbe es die Möglichkeit die Daten im JSON oder XML Format abzulegen. In Verbindung mit dem SSIS habe ich das allerdings noch nicht eingesetzt.
  5. Hallo! Entweder nachträglich in der Zieldatenbank mit "UPDATE" ändern oder bei der Übernahme gleich anpassen. Die Funktion "CASE" sollte dabei hilfreich sein. SG
  6. Hallo CHris Für mich schaut’s so aus als wäre der User noch nicht richtig zugewiesen. Schon sp_change_users_login versucht? Wenn ich mich richtig entsinne ist das die Fehlernummer die bei auftritt wenn man zuerst den Benutzer hat und anschließend von einem anderen Server die Rücksicherung macht. .
  7. Und was hindert dich daran dich an dieser Tabelle zu orientieren um deinen Datenabgleich vorzunehmen? Wenn du da einen laufende Nummer oder einen Zeitstempel mitschreibst hast du doch was du brauchst?
  8. Datenabgleich heißt für mich auch Änderungen zu übernehmen, also auch Löschungen und Korrekturen. Da wirst dir mit einer fortlaufenden Nummer schwer tun, außer die du legst für jeden Änderung einen neuen Datensatz an. Hast vielleicht ein Änderungsdatum im Datensatz oder eine Tabelle die Änderungen mitloggt?
  9. Hallo. Ganz verstehe ich das Anliegen nicht. Für mich fehlen die Rahmbedingungen. Kannst du von einer Datenbank direkt auf die andere zugreifen? Was ist der Zweck des Datenabgleichs? Von wo nach wo gehen Daten? Transportierst du 1 Record von A nach B oder checkst du ob sich einzelne Werte in einem Record geändert haben und übergibst nur diese? Eindeutige Indexe und Primary Key sind generell ja nicht das selbe. Eindeutige Indexe kannst du ja viele haben, unabhängig wie sie aufgebaut sind. Gruß MDD
  10. Moin. Ich bin mir nicht sicher ob das zu abwegig ist im lokalen Netzwerk, aber ist die MTU-Size bei allen Clients gleich eingestellt?
  11. Das hab ich nicht mal bei Version 18 mehr gefunden. EDIT: Muss mich korrigieren. Die XML Datei habe ich gefunden nur die BIN Datei nicht mehr.
  12. Morgen. Mit der Maus drüber fahren [ENTF]-Taste drücken Dann sollten sie eigentlich weg sein. Bei mir funktioniert es zumindest bis SSMS 18 so. Gruß MDD
  13. Morgen! Sicherung oder Snapshot? SQL Express unterstützt die Snapshot Funktionen nicht. Da ist die Enterprise oder Developer-Edition nötig. Gruß MDD
  14. Trotz Crossposting .... der vollständigkeitshalber trag ich es hier auch noch ein. Überprüf mal was bei dir der erste Tag der Woche ist select @@datefirst Wenn das 1 sein sollte dann passt es nicht mit dem Kalender zusammen und du müsstest fürs Wochenende 6 und 7 ausnehmen statt 1 und 7. Werde hier aber nicht mehr zu diesem Thema weiter schreiben.
  15. Ich habs trotzdem nochmal versucht /* create table #abwesend (mitarbeiter varchar(10), unterbrechungsgrund varchar(10), datum date) insert into #abwesend values ('Huber','Urlaub','20230317'), ('Huber','Urlaub','20230318'), ('Huber','Urlaub','20230403'), ('Huber','Urlaub','20230404'), ('Maier','krank','20230317'), ('Maier','Urlaub','20230318'), ('Müller','krank','20230317'), ('Müller','Urlaub','20230525'), ('Müller','Urlaub','20230526') */ DECLARE @StartDate DATE = '20230317'; DECLARE @CutoffDate DATE = DATEADD(DAY, - 1, DATEADD(YEAR, 1, @StartDate));; WITH seq (n) AS ( SELECT 0 UNION ALL SELECT n + 1 FROM seq WHERE n < DATEDIFF(DAY, @StartDate, @CutoffDate) ) ,d (d) -- Kalender ohne Wochenende AS ( SELECT DATEADD(DAY, n, @StartDate) FROM seq ) ,kalender ( d ,mitarbeiter ) AS ( SELECT d ,mitarbeiter FROM d CROSS JOIN ( SELECT DISTINCT mitarbeiter FROM #abwesend ) AS x where DATEPART(WEEKDAY,d) not in (1,7) -- für Wochenende keinen Tag in der Tabelle erzeugen ) ,letzttag ( mitarbeiter ,d)--Tabelle mit Erster Arbeitstag AS ( SELECT KALENDER.mitarbeiter ,MIN(d) FROM KALENDER LEFT JOIN #abwesend a ON a.datum = d AND kalender.mitarbeiter = a.mitarbeiter WHERE datum IS NULL GROUP BY KALENDER.mitarbeiter ) SELECT * FROM #abwesend WHERE EXISTS ( SELECT MAX(datum) maxdat ,ab.mitarbeiter FROM #abwesend ab JOIN letzttag ON letzttag.mitarbeiter = #abwesend.mitarbeiter WHERE datum < d GROUP BY ab.mitarbeiter HAVING ab.mitarbeiter = #abwesend.mitarbeiter AND MAX(datum) = #abwesend.datum ) OPTION (MAXRECURSION 0) Der erste Teil erzeugt einen Kalender (für 1 Jahr) ohne Wochenende, Da könnte man auch auf das höchste Datum +1 Tag der Abwesenheitstabelle gehen. Was klar nicht abgedeckt ist sind die Feiertage. Dann hol ich mir das erste Datum wenn die Leute wieder da sind und dann aufgrund dessen wieder das letzte an dem sie gefehlt haben mitsamt dem Grund. Verknüpft habe ich über die Mitarbeiternamen, da gibts sicher auch was eindeutiges. aber als Idee sollte es reichen.
×
×
  • Neu erstellen...