SQL命令将SUM()与Whewer子句一起使用



请我从手机中打字,因为我不在笔记本电脑上,不要降低声誉。

我在我的SQL Server数据库中有一个名为total_amount的列,我想获得特定收银员的特定日期(total_amount(。我只能获得特定的收银员,但是如果我想在收银员和日期都使用Where子句,那将一无所获。该命令在SQL Server Management Studio中运行良好,但在VB中运行。网络没有。

以下是我的代码。

         Dim conn As New SqlConnection("data. 
         source=PRECIOUSMUMMSSQLSERVER_1; initial.    
         catalog=inventory; user id=mantics; 
         password=emudeji;")
        Try
        'Dim Total_Amountss As Double
        conn.Open()
        Dim cmd = New SqlCommand
        With cmd
            .Connection = conn
            .CommandText = "SELECT   SUM(Total_Amount) 
          AS Total_Amount FROM tblOrder WHERE.    
        (cashier=@cashier) AND (Order_date=@Order_date)"
            .Parameters.AddWithValue("@cashier", 
         lbl_Cashier_Name.Text)
            .Parameters.AddWithValue("@Order_date", Date.Today.ToString)
            '.Parameters.AddWithValue("@enddate", dtpicker.Value.Date)
        End With
        Dim dr As SqlDataReader
        dr = cmd.ExecuteReader
        dr.Read()
        If IsDBNull(dr("Total_Amount")) Then
            lbl_cashier_Totalsales.Text = "N0.00"
        Else
            Dim str As Double
            str = dr.Item("Total_Amount")
            lbl_cashier_Totalsales.Text = FormatCurrency(dr.Item("Total_Amount"))
        End If

显然是错误的第一件事是您使用字符串查询日期列。这是永远不正确的,因为字符串是您用来向最终用户显示日期的东西。这不是数据库(或.NET(存储日期值的方式。因此,不是使用字符串查询日期列,而是直接传递添加方法中的C#DateTime值并指定参数的数据类型。第二个可能的错误是由于您还存储了时间零件,然后通过今天的日期将永远不会匹配任何行,而只有一个将00:00:00作为其时间值匹配的事实。

您需要查询> =起始日期的午夜和<第二天。

此考虑将给出这样的查询:

With cmd
   .Connection = conn
   .CommandText = "SELECT SUM(Total_Amount) AS Total_Amount 
                   FROM tblOrder 
                   WHERE (cashier=@cashier) AND 
                   (Order_date >= @StartDate AND 
                    Order_date < @EndDate)"
   .Parameters.Add("@cashier", SqlDbType.NVarChar).Value = lbl_Cashier_Name.Text
   .Parameters.Add("@StartDate", SqlDbType.DateTime).Value = Date.Today
   .Parameters.Add("@EndDate", SqlDbType.DateTime).Value = Date.Today.AddDays(1)
End With

最新更新