Mit Microsoft SQL Server 2008 habe ich eine Abfrage, die etwas Aufmerksamkeit benötigt. Ich bin verwirrt über die Joins benötigt, um meine Abfrage korrekt durchzuführen.SQL verbindet Problem
USE [ShaftData]
GO
/****** Object: StoredProcedure [dbo].[MyPareto] Script Date: 04/03/2012 19:32:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[MyPareto]
as
SELECT i.pg,
dbo.OldParetoAnalysis.Pareto,
i.part,
i.sumofqty,
a.sumofqty,
dbo.NewParetoAnalysis.Pareto
FROM
OPENQUERY(SACBAUTO, 'SELECT dbo.iLines.Part,
dbo.iLines.Pg,
SUM(dbo.iLines.Qty) as sumofqty,
dbo.iLines.Prefix
FROM Autopart.dbo.iLines
where prefix = ''i''
and [datetime] > dateadd(month, -6, getdate())
group by
dbo.ilines.pg,
dbo.ilines.part,
dbo.ilines.prefix
order by sumofqty desc') i
RIGHT JOIN
dbo.OldParetoAnalysis
on
i.part collate SQL_Latin1_General_CP1_CI_AS = dbo.OldParetoAnalysis.Part
LEFT JOIN
OPENQUERY(SACBAUTO, 'SELECT dbo.aLines.Part,
dbo.aLines.Pg,
SUM(dbo.aLines.Qty) as sumofqty,
dbo.aLines.Prefix
FROM Autopart.dbo.aLines
where prefix = ''d''
and [datetime] > dateadd(month, -6, getdate())
group by
dbo.alines.pg,
dbo.alines.part,
dbo.alines.prefix
order by sumofqty desc') a
ON
dbo.OldParetoAnalysis.Part collate SQL_Latin1_General_CP1_CI_AS = a.part
FULL JOIN
dbo.NewParetoAnalysis
ON
a.part collate SQL_Latin1_General_CP1_CI_AS = dbo.NewParetoAnalysis.Part
WHERE
i.pg = '31'
GROUP BY
i.pg,
dbo.OldParetoAnalysis.Pareto,
i.part,
i.sumofqty,
a.sumofqty,
dbo.NewParetoAnalysis.Pareto
ORDER BY
dbo.OldParetoAnalysis.Pareto desc
Ok die Erklärung, ich muss diese Felder zeigen. Momentan brauche ich alle Zeilen von alten Pareto zu zeigen. new pareto ist ein Klon des alten, der für die Aktualisierung verwendet wird (das ist der nächste Teil, der geplant ist).
Das Problem ist, dass derzeit meine Pareto korrekt 1-5780 zeigt. aber die neue Pareto-Spalte, die Zeile für Zeile übereinstimmen sollte, zeigt Leerzeichen, dies deutet darauf hin, dass nicht alle Zeilen angezeigt werden (möglicherweise etwas mit NULL-Werten zu tun haben).
Ich hoffe, es ist etwas mit meinen Joins zu tun, wie Sie es wahrscheinlich eine komplizierte Abfrage sehen, aber es funktioniert für das, was ich brauche, Problem ist die Zeit, es ist schnell, weil ich 24 Stunden haben, um diese Abfrage mit Nein abzuschließen vorherige Planung (ja, ich habe mich auch geärgert).
Oh und Pareto ist nur eine Nummer zu den meistverkauften Teile, wie eine Liga zugeordnet.
Wenn Sie weitere Informationen benötigen, einfach fragen und schlecht bearbeiten.
Vielen Dank
EDIT: Ok das Problem gelöst, wird die Antwort aktualisiert.
Ich bin sehr verwirrt, kann mir jemand zeigen, wie ich jetzt meine alten und neuen Pareto-Tabellen aktualisieren würde? da Theres eine Tonne
Huch ... vielleicht in Betracht ziehen, diese 'OPENQUERY' in eine Ansicht zu ändern, die auf Ihren Verbindungsserver verweist? Das würde wahrscheinlich einen langen Weg in Richtung Vereinfachung Ihrer Abfrage führen, so dass es einfacher ist, den Kopf herumzukriegen. –
Yup, nachdem ich für einen Rauch ging, habe ich endlich diesen Sauger geknackt. erfordern, dass ich das Layout der Abfrage und Joins ändere. Ill poste die bearbeitete Version, wenn jemand interessiert ist – lemunk
Wenn Sie noch Fragen haben, würde ich Ihre Frage aktualisieren. Wenn Ihre aktualisierte Abfrage Ihre Probleme löste, poste ich sie als Antwort auf Ihre eigene Frage und markiere sie als akzeptierte Antwort. –