如何向sql添加多个变量

时间:2011-11-08 16:13:20

标签: sql

我一直在努力解决这个问题并理解声明声明,但是当需要超过2个声明声明时我不明白。我应该更新折扣表以存储类型为初始客户的#7896,将一个变量的值设置为等于折扣表中的最大折扣金额。我将此变量命名为highDiscount。将下一个变量的值设置为具有最高折扣的商店名称(在上面的步骤2中找到)。我将此变量命名为storeName。将最大折扣乘以10%,并将结果放入第三个变量。我将此变量命名为discountAmount。将discountamount的结果添加到当前最大折扣,并将值分配给第四个变量。我将此变量命名为totalNewDiscount

这就是我所拥有的:

Use pubs  
UPDATE dbo.discounts  
Set Stor_Id = '#7896'  

Declare @highDiscount money;  
Set @highDiscount = (Select MAX(discounts) From [dbo].discounts);  
Select @highDiscounts;  

Declare @ storeName money;  
Set @storeName =(SELECT Max(discounttype)FROM dbo.discounts)  

Declare @discountAmount money;  
Set @discountAmount = @discountAmount * 10%

当时这就是我所拥有的,并且我想弄清楚如何将折扣金额的结果添加到当前最大折扣并将值分配给第四个变量。我知道我可以做类似SET @TotalNewDiscount = @discountAmount + @highDiscount.的事情但是对我来说,我认为我已经宣布了太多变数。现在,我能够将所有变量放在一起,但是他们正在做他们想做的事情吗?

4 个答案:

答案 0 :(得分:1)

代码没有多大意义。您将@highDiscount设置为查询结果,然后立即select @highDiscounts。错误的额外s

您也声明@discountAmount,但不要给它一个值。然后,将此未初始化(因此默认为NULL)变量乘以10%,这不是有效语句。空单时间结果为空。

要进行10%的计算,应该是

set @discountAmount = @discountAmount * 0.1;

并且应该预先为其分配一个值,因此实际上可以给予折扣。

答案 1 :(得分:0)

注意UPDATE,你没有放任何子句,所以实际上该语句将用“#7896”更新每一行。 另外注意第二个查询,你有太多的SELECT。 (哦,变量声明中有一个拼写错误)

仔细查看第三个查询,因为据我所知,您必须选择折扣最高的商店名称,但不要使用上面找到的变量@highDiscount。你再次缺少一个WHERE子句。

在第四个中你使用@discountAmount,它没有被分配。如上所述,您必须在该查询中使用@highDiscounts来计算@discountAmount。

答案 2 :(得分:0)

好的,你可以通过一次选择来改善你的查询,因为你使用的是同一个表。

Use pubs 

UPDATE 
    dbo.discounts 
Set 
    Stor_Id = '#7896' 
WHERE
  ??????????? -- This needs something to specify which row you want updates

Declare @highDiscount money; 
Declare @storeName money; 
Declare @discountAmount money; 

SELECT 
    @highDiscount = MAX(discounts), 
    @storeName = Max(discounttype)
FROM 
    dbo.discounts

现在这不会起作用

Declare @discountAmount money;    
Set @discountAmount = @discountAmount * 10%    

这是因为你声明了它,但没有把任何东西放入其中。语法也是错误的,你需要乘以0.10,如Marc B所说。

但有一个问题,一旦你填充了这些变量,你在做什么?

答案 3 :(得分:0)

我正在研究同样的问题,经过大量的研究后,我能够让它工作,不确定它是否正确,但我没有得到任何错误,结果是导师正在寻找的。所以,在这里。 。

UPDATE dbo.discounts
SET stor_id = '7896'
WHERE discounttype = 'initial customer'
GO

DECLARE @highDiscount money;
SET @highDiscount = (SELECT MAX(discount) FROM dbo.discounts);

DECLARE @storeName varchar(40);
SELECT @storeName = stor_name
FROM dbo.stores st
INNER JOIN dbo.discounts di
ON st.stor_id = di.stor_id
WHERE discount = @highDiscount;


DECLARE @discountAmount money;
SET @discountAmount = @highDiscount * .10

DECLARE @totalNewDiscount money;
SET @totalNewDiscount = @discountAmount + @highDiscount

SELECT @storeName 'Store Name',
       @highDiscount 'High Discount', 
   @discountAmount 'Discount Amount', 
   @totalNewDiscount 'Total New Discount'

如果有人想给我清理它的提示,我会很感激。