【问题标题】:ASP .NET SQL Query SUM, TOTAL & NEW COLUMNASP .NET SQL 查询总和、总计和新列
【发布时间】:2012-05-10 09:18:04
【问题描述】:

我已经思考了好几个小时,但仍然不知道如何做到这一点。您如何获得某件商品每年的总销售额。

到目前为止,我得到的是:

SQLCommand.CommandText = @"SELECT SUM SalesNo AS TotalYearSales FROM SalesTable WHERE Product = " + ddItems.SelectedItem + "";.

表格标题依次为Product、Year、SalesNo。

【问题讨论】:

  • 警告您的代码容易受到 sql 注入攻击。

标签: c# asp.net mysql web


【解决方案1】:
SQLCommand.CommandText = @"SELECT DatePart( YY, SalesDate ), SUM( SalesNo ) AS TotalYearSales FROM SalesTable WHERE Product = ? GROUP BY DatePart( YY, SalesDate ) ";
SQLCommand.Parameters.Add( "parmForProduct", ddItems.SelectedItem );

正如 Daniel 指出的那样,您很容易受到 sql 注入攻击,并且应该参数化查询。

要按年份获取总数,您还必须添加年份作为查询的基础。我不知道交易所基于的表格中的“日期”列,因此您必须进行调整。这 ”?”在查询中是紧随其后添加的参数的“占位符”。参数的添加顺序应与查询中列出的顺序相同。一些 SQL 引擎允许“命名”参数并使用类似“@ProductIWant”的东西,而您的参数将使用相同的...

由于您只查询特定产品,因此不需要在列表中。除非您希望所有产品按年份分组。

【讨论】:

    【解决方案2】:

    类似的东西

    Select Year(SalesDate),Sum(SalesNo) From SalesTable where Product = "Navel Defluffer"
    Group By Year(SalesDate)
    

    正如@Daniel 所暗示的,使用参数化查询而不是字符串连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多