【问题标题】:SQL - Procedure & Query with SUM & returnSQL - 带有 SUM 和返回的过程和查询
【发布时间】:2016-07-15 15:44:24
【问题描述】:

我正在尝试使用执行 SUM 的子查询来执行 Procedure。 该程序应列出<ProductFinished>的所有项目(即Pizza等)并列出配料,配料单价和成品成本总和。

数据库的UML:

The product <NameFInishedProduct> is composed of 
        3 <NameRawProduct> priced <BuyPrice> € each
        1 <NameRawProduct> priced <BuyPrice> € each
The total price of the <NameFInishedProduct> is <SUM> €.

正常输出的女巫应该是这样的

The product Pizza is composed of
        3 Tomato priced 2 € each
        1 Cheese priced 1€ each
The total price of the Pizza is 7 €.

【问题讨论】:

  • 这不是工作委员会。我们不是来为你做你的工作的。
  • 这是一个很好的起点。 spaghettidba.com/2015/04/24/…
  • 你试过什么?你有什么问题? PS @Marc > 我完全同意你的看法。\

标签: sql-server stored-procedures


【解决方案1】:

这应该可行:

SELECT textLine FROM
(
    SELECT  pf.NameFinishedProduct As Name, 
            1 as Typ, 
            N'The product '+pf.NameFInishedProduct+N' is composed of' As textLine
    FROM    ProductFinished As pf
 UNION ALL
    SELECT  pf.NameFinishedProduct, 
            2, 
            N'        '+CAST(co.QuantityUsed As NVARCHAR(80))+N' '+pr.NameRawProduct+N' priced '+CAST(pr.BuyPrice As NVARCHAR(80))+N' € each'
    FROM    ProductFinished As pf
    JOIN    Composition     As co ON co.IdProductFinished = pf.IdProductFinished
    JOIN    ProductRaw      As pr ON pr.IdProductRaw      = pr.IdProductRaw
 UNION ALL
    SELECT  pf.NameFinishedProduct, 
            3, 
            N'The total price of the '+pf.NameFInishedProduct+N' is '+CAST(SUM(co.QuantityUsed * pr.BuyPrice) AS NVARCHAR(80))+N' €.'
    FROM    ProductFinished As pf
    JOIN    Composition     As co ON co.IdProductFinished = pf.IdProductFinished
    JOIN    ProductRaw      As pr ON pr.IdProductRaw      = pr.IdProductRaw
    GROUP BY pf.NameFinishedProduct
) AS A
ORDER BY Name, Typ

当然,我没有什么可以测试它的,所以请谨慎购买。

【讨论】:

  • 我写了一个主要查询并考虑发布。 OP 应该以某种形式编写“过程”和“子查询”。显然 OP 不能像家庭作业那样提交你的解决方案,但希望你已经提供了足够的东西让他撕毁并在这个过程中真正学到一些东西。
  • @shawnt00 是的,我知道。程序很简单。像我一样把它写成一个大程序是“困难的”。但我很无聊,是的,我认为他们可以学到一些东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-30
  • 1970-01-01
  • 2014-01-22
相关资源
最近更新 更多