hello
thank you
you know first i want to do the following insert
can you help me to make it faster?
</
INSERT INTO AMPPU_Alle_Fehlteile (
SNR, Auftrag, Fehlercode, Fehlerort1, Fehlerort2, Fehlerort3, Fehlerart, Bemerkung_Eintrag,
Fehlteil, Fehlteilname, Station, QG_Bereich, CD_Subprozess, Garantiecode, Prüfer, Prüfplatz,
Zeit_Fehler_EIN, Zeit_Fehler_AUS, NA_durch, Bemerkung_Austrag, NA_d_KoSt, [4M_Analyse], Reparatur_hr,
[CAB-16], [VL-01], [BV-05], Offline_date, Offline_Jahr, Offline_Monat, Offline_Woche,
OKTOSHIP, Brand, QS_Plattform, QS_Baureihe, QS_Typ, QS_Modell, Technical_Type_Nr,
On_Line_Repair, Kit, Lieferanten, Lieferanten_Nummer, Disponent, pn_description, Lieferanten_Nummer_Kanban,
Von_Adresse, Zu_Adresse, Failure_Date)
SELECT aa.SNR, aa.Auftrag, aa.Fehlercode, aa.Fehlerort1, aa.Fehlerort2, aa.Fehlerort3, aa.Fehlerart, aa.Bemerkung_Eintrag,
aa.Fehlteil, aa.Fehlteilname, aa.Station, aa.QG_Bereich, aa.CD_Subprozess, aa.Garantiecode, aa.Prüfer, aa.Prüfplatz,
aa.Zeit_Fehler_EIN, aa.Zeit_Fehler_AUS, aa.NA_durch, aa.Bemerkung_Austrag,aa.NA_d_KoSt, aa.[4M_Analyse], ROUND(aa.Reparatur_min/60,2) AS Reparatur_hr,
aa.[CAB-16], aa.[VL-01], aa.[BV-05], LEFT(CONVERT(NVARCHAR, aa.[BV-05], 120), 10) Offline_Date, YEAR(aa.[BV-05]) Offline_Jahr,
MONTH(aa.[BV-05]) Offline_Monat, DATEPART(WW,aa.[BV-05]) Offline_Woche,
aa.OKTOSHIP, aa.Brand, aa.QS_Plattform,aa.QS_Baureihe, aa.QS_Typ, aa.QS_Modell, aa.Technical_Type_Nr,
CASE WHEN aa.Zeit_Fehler_AUS IS NULL THEN 'No'
WHEN aa.[BV-05] >= aa.Zeit_Fehler_AUS THEN 'Yes'
ELSE 'No' END On_Line_Repair,
bb.kit, cc.Lieferanten, cc.Lieferanten_Nummer, dd.Disponent, dd.pn_description, ff.Lieferanten_Nummer_Kanban, ee.Von_Adr, ee.Zu_Adr,
LEFT(CONVERT(NVARCHAR, aa.Zeit_Fehler_EIN, 120), 10) As Failure_Date
FROM AQIs.dbo.Alle_Fehlerdaten AS aa
LEFT OUTER JOIN (SELECT MIN(Kommissionier_Code) kit, Teil_Nummer
FROM MES_Prod.dbo.v_MES_Kommissionier_Parameter_Teile
GROUP BY Teil_Nummer) bb
ON aa.Fehlteil = bb.Teil_Nummer
LEFT OUTER JOIN (SELECT t.Lieferanten_Nummer Lieferanten_Nummer, l.Lieferanten_Name_1 Lieferanten, Teil_Nummer
FROM dbo.Lieferanten l
RIGHT OUTER JOIN (SELECT MIN(Lieferanten_Nummer) AS Lieferanten_Nummer, Teil_Nummer
FROM dbo.Lieferanten_Teile
WHERE (Liefer_Quote >= 50)
GROUP BY Teil_Nummer) t
ON l.Lieferanten_Nummer = t.Lieferanten_Nummer) cc
ON aa.Fehlteil = cc.Teil_Nummer
LEFT OUTER JOIN (SELECT Teil_Benennung pn_description, Disponent Disponent, Teil_Nummer
FROM dbo.Teile) dd
ON aa.Fehlteil = dd.Teil_Nummer
LEFT OUTER JOIN (SELECT DISTINCT a.Teil_Nummer,
qry_Montage_Adrssen_Von.Von_Adr,
qry_Montage_Adrssen_Zu.Zu_Adr
FROM (SELECT Teil_Nummer, MIN(Von_Adresse) AS Von_Adr, Lieferanten_Nummer_Kanban
FROM dbo.ME_Montage_Adressen
WHERE Von_Adresse <> ''
AND KZ_Änderung = 'A' --Neu Mario 26.11.2013
GROUP BY Teil_Nummer, Lieferanten_Nummer_Kanban) AS qry_Montage_Adrssen_Von
RIGHT OUTER JOIN dbo.ME_Montage_Adressen AS a
ON qry_Montage_Adrssen_Von.Teil_Nummer = a.Teil_Nummer
LEFT OUTER JOIN (SELECT Teil_Nummer, MIN(Zu_Adresse) AS Zu_Adr
FROM dbo.ME_Montage_Adressen
WHERE Zu_Adresse <> ''
AND KZ_Änderung = 'A' --Neu Mario 26.11.2013
GROUP BY Teil_Nummer) AS qry_Montage_Adrssen_Zu
ON qry_Montage_Adrssen_Zu.Teil_Nummer = a.Teil_Nummer
WHERE (a.Von_Adresse <> '') AND (a.KZ_Änderung = 'A') AND (qry_Montage_Adrssen_Von.Teil_Nummer IS NOT NULL)
OR (a.Von_Adresse = '') AND (a.KZ_Änderung = 'A') AND (qry_Montage_Adrssen_Von.Teil_Nummer IS NULL)
GROUP BY a.Teil_Nummer,
qry_Montage_Adrssen_Von.Von_Adr,
qry_Montage_Adrssen_Zu.Zu_Adr,
qry_Montage_Adrssen_Von.Lieferanten_Nummer_Kanban) ee
ON aa.Fehlteil = ee.Teil_Nummer
LEFT OUTER JOIN (SELECT DISTINCT Teil_Nummer, Lieferanten_Nummer_Kanban
FROM ME_Montage_Adressen
WHERE Lieferanten_Nummer_Kanban IS NOT NULL) ff
ON aa.Fehlteil = ff.Teil_Nummer
WHERE RIGHT(aa.Fehlercode, 1) IN ('4', '5')
AND NOT EXISTS (SELECT NULL FROM AMPPU_Alle_Fehlteile AS b
WHERE aa.Auftrag = b.Auftrag
AND aa.Fehlercode = b.Fehlercode
AND aa.Zeit_Fehler_EIN = b.Zeit_Fehler_EIN);
--AND aa.[BV-05] IS NOT NULL;
--
-- Step 2: Von Adresse
update AMPPU_Alle_Fehlteile
set Von_Adresse=Lieferanten_Nummer_Kanban
where Von_adresse is null
or Von_adresse='';
WITH cte AS (
SELECT DISTINCT a.Von_Adresse, a.Fehlteil, a.Failure_Date
FROM AMPPU_Alle_Fehlteile a
WHERE a.Von_Adresse IS NOT NULL
And Failure_Date = @Today
)
UPDATE A
SET Von_Adresse= cte.Von_Adresse
FROm AMPPU_Alle_Fehlteile A
INNER JOIN cte ON A.Failure_Date = cte.Failure_Date
AND A.Fehlteil = cte.Fehlteil;
--
--
--
--BEGIN
-- --
-- DECLARE cr_VonAdresse CURSOR FOR
-- SELECT DISTINCT a.Von_Adresse, Fehlteil, Failure_Date
-- FROM AMPPU_Alle_Fehlteile a
-- WHERE a.Von_Adresse IS NOT NULL
-- And Failure_Date = @Today
-- --
-- OPEN cr_VonAdresse
-- FETCH NEXT FROM cr_VonAdresse
-- INTO @Von_Adresse, @Fehlteil, @Failure_Date
-- --
-- WHILE @@FETCH_STATUS = 0
-- BEGIN
-- --
-- BEGIN
-- --
-- UPDATE AMPPU_Alle_Fehlteile
-- SET Von_Adresse = @Von_Adresse
-- WHERE Failure_Date = @Failure_Date
-- AND Fehlteil = @Fehlteil;
-- END
-- --
-- FETCH NEXT FROM cr_VonAdresse
-- INTO @Von_Adresse, @Fehlteil, @Failure_Date
-- --
-- END
-- --
-- CLOSE cr_VonAdresse
-- DEALLOCATE cr_VonAdresse
-- --
--END
--
--
-- Step 3: Where there is no part number specified, no root cause analysis is possible!
--
UPDATE AMPPU_Alle_Fehlteile
SET Bereich = 'unknown pn',
Process = 'N/A',
Root_Cause = 'N/A'
WHERE pn_description IS NULL
--OR Fehlteil like '%[a-z]%')
AND LEFT(CONVERT(NVARCHAR, Zeit_Fehler_EIN, 120), 10) = LEFT(CONVERT(NVARCHAR, GETDATE(), 120), 10);
--
--
-- Step 4: Make sure some information are up-to-date!
--
UPDATE AMPPU_Alle_Fehlteile
SET [BV-05] =
(SELECT [BV-05]
FROM AQIs.dbo.Alle_Fehlerdaten
WHERE Auftrag = AMPPU_Alle_Fehlteile.Auftrag
AND Fehlercode = AMPPU_Alle_Fehlteile.Fehlercode
AND Zeit_Fehler_EIN = AMPPU_Alle_Fehlteile.Zeit_Fehler_EIN),
Zeit_Fehler_AUS =
(SELECT Zeit_Fehler_AUS
FROM AQIs.dbo.Alle_Fehlerdaten
WHERE Auftrag = AMPPU_Alle_Fehlteile.Auftrag
AND Fehlercode = AMPPU_Alle_Fehlteile.Fehlercode
AND Zeit_Fehler_EIN = AMPPU_Alle_Fehlteile.Zeit_Fehler_EIN),
NA_durch =
(SELECT NA_durch
FROM AQIs.dbo.Alle_Fehlerdaten
WHERE Auftrag = AMPPU_Alle_Fehlteile.Auftrag
AND Fehlercode = AMPPU_Alle_Fehlteile.Fehlercode
AND Zeit_Fehler_EIN = AMPPU_Alle_Fehlteile.Zeit_Fehler_EIN),
Bemerkung_Austrag =
(SELECT Bemerkung_Austrag
FROM AQIs.dbo.Alle_Fehlerdaten
WHERE Auftrag = AMPPU_Alle_Fehlteile.Auftrag
AND Fehlercode = AMPPU_Alle_Fehlteile.Fehlercode
AND Zeit_Fehler_EIN = AMPPU_Alle_Fehlteile.Zeit_Fehler_EIN),
NA_d_KoSt =
(SELECT NA_d_KoSt
FROM AQIs.dbo.Alle_Fehlerdaten
WHERE Auftrag = AMPPU_Alle_Fehlteile.Auftrag
AND Fehlercode = AMPPU_Alle_Fehlteile.Fehlercode
AND Zeit_Fehler_EIN = AMPPU_Alle_Fehlteile.Zeit_Fehler_EIN),
[4M_Analyse] =
(SELECT [4M_Analyse]
FROM AQIs.dbo.Alle_Fehlerdaten
WHERE Auftrag = AMPPU_Alle_Fehlteile.Auftrag
AND Fehlercode = AMPPU_Alle_Fehlteile.Fehlercode
AND Zeit_Fehler_EIN = AMPPU_Alle_Fehlteile.Zeit_Fehler_EIN),
OKTOSHIP =
(SELECT OKTOSHIP
FROM AQIs.dbo.Alle_Fehlerdaten
WHERE Auftrag = AMPPU_Alle_Fehlteile.Auftrag
AND Fehlercode = AMPPU_Alle_Fehlteile.Fehlercode
AND Zeit_Fehler_EIN = AMPPU_Alle_Fehlteile.Zeit_Fehler_EIN),
--
Reparatur_hr =
(SELECT ROUND(Reparatur_min/60,2)
FROM AQIs.dbo.Alle_Fehlerdaten
WHERE Auftrag = AMPPU_Alle_Fehlteile.Auftrag
AND Fehlercode = AMPPU_Alle_Fehlteile.Fehlercode
AND Zeit_Fehler_EIN = AMPPU_Alle_Fehlteile.Zeit_Fehler_EIN),
--
Offline_date = LEFT(CONVERT(NVARCHAR, [BV-05], 120), 10),
Offline_Jahr= YEAR([BV-05]),
Offline_Monat = MONTH([BV-05]),
Offline_Woche = DATEPART(WW,[BV-05])
WHERE MONTH(Zeit_Fehler_EIN) IN (MONTH(GETDATE()),MONTH(GETDATE())-1)
AND YEAR(Zeit_Fehler_EIN) = YEAR(GETDATE());
--
--
-- Step 5: Make sure repair information are up-to-date!
--
UPDATE AMPPU_Alle_Fehlteile
SET On_Line_Repair = CASE WHEN Zeit_Fehler_Aus IS NULL THEN 'No'
WHEN [BV-05] >= Zeit_Fehler_Aus THEN 'Yes'
ELSE 'No' END;
/>