1
使用Microsoft SQL Server 2008我有一個需要注意的查詢。 我對正確執行查詢所需的連接感到困惑。SQL加入問題
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
好的解釋,我需要顯示這些字段。目前我需要從舊帕雷託的所有行來顯示。新帕雷託是舊版本的克隆版本,將用於更新(即計劃的下一部分)。
問題是,目前我的帕雷託顯示correcty 1-5780。但應匹配行的新pareto列顯示空白,這表明並非所有行都顯示(可能與空值有關)。
我希望它與我的連接有關,因爲您可以看到它可能是一個過於複雜的查詢,但它適用於我所需要的,問題是時間,其衝突,因爲我有24小時完成此查詢沒有事先計劃(是的,我也面臨着這個問題)。
哦,帕累託只是一個分配給最暢銷部分的數字,就像聯盟一樣。
如果您需要更多的信息,只需要問和編輯錯誤。
非常感謝
編輯: 好的解決了這個問題,答案將被更新。
我已經非常困惑,有人可以告訴我如何更新我的新舊帕雷託表嗎?因爲那裏有一噸的加入
Yikes ...也許考慮改變'OPENQUERY'到一個引用你的鏈接服務器的視圖?這可能會大大簡化您的查詢,所以更容易讓您的頭腦。 – 2012-04-03 21:54:36
yup在我去冒煙後,我終於破解了這個吸盤。 要求我更改查詢和連接的佈局。 如果有人感興趣,我發佈編輯後的版本 – lemunk 2012-04-03 22:04:53
如果您仍然有問題,我會更新您的問題。如果您的更新查詢解決了您的問題,我會將其作爲您自己問題的答案發布,然後將其標記爲已接受的答案。 – 2012-04-03 22:10:38