为什么我在使用这个SQL脚本时出错?

时间:2015-04-22 21:46:18

标签: sql sql-server

这是我应该回答的问题:

  1. 编写一个脚本,该脚本使用两个变量来存储(1)Products表中所有产品的数量,以及(2)这些产品的平均定价。如果产品计数大于或等于7,则脚本应打印一条消息,显示两个变量的值。否则,脚本应打印一条消息,说明“产品数量少于7”。
  2. 这是我的SQL语句:

    USE MyGuitarShop;
    
    DECLARE @AllProduct2 INT;
    DECLARE @AvgAllListPrice MONEY;
    SET @AllProduct2 = (SELECT COUNT(ProductID) FROM Products);
    SET @AvgAllListPrice = (SELECT AVG (ListPrice) FROM Products);
    IF @AllProduct2 > 7
        BEIGN
            PRINT 'The number of products is greater than or equal to 7';
            PRINT 'The average list price for the products is $' + CONVERT (varchar,@AvgAllListPrice,1);
        END;
    ELSE 
        PRINT 'The number of products is less than 7';
    

    我做错了什么或我错过了什么?

    修改

    很抱歉没有添加错误:

    Msg 102,Level 15,State 1,Line 8 “BEIGN”附近的语法不正确。 Msg 102,Level 15,State 1,Line 11 ';'附近的语法不正确。

    我最后通过重新编写代码来修复它:

        USE MyGuitarShop;
    
        DECLARE @AllProduct2 INT;
        DECLARE @AvgListPrice MONEY;
        SELECT @AllProduct2 = COUNT(ProductID),
        @AvgListPrice = AVG (ListPrice)
        FROM Products
        IF @AllProduct2 > 7
            BEGIN
                PRINT 'The number of products is greater than or equal to 7';
                PRINT 'The average list price is $' + CONVERT (VARCHAR, @AvgListPrice,1) + '.';
            END;
        ELSE
            PRINT 'The number of products is less than 7';
    

    再次抱歉,感谢帮助我的人!!!!!

2 个答案:

答案 0 :(得分:0)

BEGIN

中有拼写错误

答案 1 :(得分:-2)

您应该使用SELECT ... INTO ...语法。这也允许您使用单个查询设置两个变量。

SELECT COUNT(ProductID), AVG(ListPrice) INTO @AllProduct2, @AvgAllListPrice FROM PRODUCTS

或替代分配语法

SELECT @AllProduct2 := COUNT(ProductID), @AvgAllListPrice := AVG(ListPrice) FROM PRODUCTS

现在您正在尝试将结果集分配给变量,而不是该结果集中包含的值。