我有3个网站,价格和PriceMonth。网站有很多价格(加入siteId)。 PriceMonth持有Price查询的日期(加入PriceMonth)。SQL更新 - 是否有一个更优雅和有效的方式来做到这一点?
这个想法是,当网站创建为占位符时创建价格记录。
当用户点击视图中的价格行时 - 我只需要更新当年剩余时间的价格并从当月开始。
我已经编写了一个存储过程的代码。现在请忽略硬编码值。它的工作原理,但它可以变得更简单,更高效?
代码:
DECLARE @startDate smallDateTime
DECLARE @roc decimal(5,2)
DECLARE @Lec decimal(5,2)
DECLARE @power decimal(5,2)
SET @roc = (SELECT roc FROM [Price] WHERE siteId = 77 AND PriceMonthId = 527)
SET @lec = (SELECT lec FROM [Price] WHERE siteId = 77 AND PriceMonthId = 527)
SET @power = (SELECT [power] FROM [Price] WHERE siteId = 77 AND PriceMonthId = 527)
SET @startDate = (Select [month] FROM [PriceMonth] WHERE PriceMonthId = 527)
UPDATE
Price
SET
roc = @roc
, lec = @lec
, [power] = @power
FROM
Price
INNER JOIN priceMonth pm ON price.priceMonthId = pm.priceMonthId
WHERE
(DATEPART(mm,pm.[Month]) > DATEPART(mm,@startDate) AND
(DATEPART(yy,pm.[Month]) = DATEPART(yy,@startDate))) AND
price.SiteId = 77
你能解释为什么你需要占位符吗?为什么不直接在实际数据中插入价格? – JohnFx 2009-10-03 15:18:49
当然,这是企业的一项要求,所以他们不必一年的所有价格。我要求改变这一点,但我不允许 - 所以简而言之,这并不重要 - 我需要它们。 – Davy 2009-10-03 15:22:30