【发布时间】:2012-04-04 09:09:55
【问题描述】:
使用:
- Microsoft SQL Server 2008
- Microsoft Visual Studio 2010
- C#
- .NET 4.0
- WinForms
好的,这是我的存储过程。振作起来,这很匆忙,因为我有 24 小时的最后期限,昨天我下班时被告知(是的,我很生气)。
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[MyPareto]
@pgParam varchar(255)
AS
SELECT i.pg,
dbo.OldParetoAnalysis.Pareto,
i.part,
i.sales6months,
a.LostSales6Months,
dbo.NewParetoAnalysis.Pareto
FROM
OPENQUERY(SACBAUTO, 'SELECT dbo.iLines.Part,
dbo.iLines.Pg,
SUM(dbo.iLines.Qty) as sales6months,
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 sales6months desc') i
RIGHT JOIN
dbo.OldParetoAnalysis
on
i.part collate SQL_Latin1_General_CP1_CI_AS = dbo.OldParetoAnalysis.Part
INNER JOIN
dbo.NewParetoAnalysis
ON
dbo.OldParetoAnalysis.Part collate SQL_Latin1_General_CP1_CI_AS = dbo.NewParetoAnalysis.Part
LEFT JOIN
OPENQUERY(SACBAUTO, 'SELECT dbo.aLines.Part,
dbo.aLines.Pg,
SUM(dbo.aLines.Qty) as LostSales6Months,
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 LostSales6Months desc') a
ON
dbo.NewParetoAnalysis.Part collate SQL_Latin1_General_CP1_CI_AS = a.part
/*FULL OUTER JOIN
dbo.NewParetoAnalysis
ON
a.part collate SQL_Latin1_General_CP1_CI_AS = dbo.NewParetoAnalysis.Part*/
WHERE
i.pg = @pgParam
GROUP BY
i.pg,
dbo.OldParetoAnalysis.Pareto,
i.part,
i.sales6months,
a.LostSales6Months,
dbo.NewParetoAnalysis.Pareto
ORDER BY
dbo.OldParetoAnalysis.Pareto asc
程序效果很好,也很快(不知道呵呵)。我现在遇到的问题是如何更新。
我只想更新 2 个表:OldPareto 和 NewPareto。
数据将仅来自一列,即NewPareto 列。这将更新两个表中的列。
通常它只是在代码中使用SqlDataAdapter 和DataSet 进行简单的UPDATE 调用。
但是由于我有这个疯狂的存储过程,我很困惑它是如何工作的。
如果您需要任何 C# 代码,请告诉我。
非常感谢!
【问题讨论】:
-
newPareto 和 oldPareto 表与此查询的结果有何关联?
-
我的数据网格中的第一列是旧的帕累托。旧的 perato 和新的只是自动编号(将 pareto 视为最畅销零件的联盟)。新的帕累托是相同的数据,但我的老板将出于他需要的任何原因编辑该列。然后我需要一个更新查询来更新两个表中的新旧字段。是不是更清楚了?
-
在我的代码中将新的帕累托放入一个新表中,然后使用该表更新我的 2 个 sql 表。唯一的问题是它似乎有很长的路要走,所以我希望有一个更快的解决方案
标签: c# sql-server-2008 stored-procedures sql-update