首页 > 解决方案 > asp.net SQL SUM 子句与另一个表的连接语法错误

问题描述

我正在开发 asp.net web 表单上的 gridview 填充,并认为 SQL 语句与 mysql 相比具有相似的语法。

我有一个 CustomerList 和 CustomerTracking 表,其中 CustomerTracking 有一个链接到 CustomerList 表条目的 CustUUID。我还试图从 CustomerTracking 中的横幅中获取与 CustUUID 匹配的所有条目的总和

这是我要解析的 sql 语句。

string command2 = "SELECT b.Name, b.Link, SUM(t.CustomerTracking) as CustomerTrackingList, SUM(t.ClickCount) as ClickCount " +
                    "FROM CustomerList as b JOIN CustomerTracking as t" +
                    "IN b.CustUUID= t.CustUUID" +
                    "WHERE t.date> 11/21/2006";

还尝试如下明确说明表名。

string command2 = "SELECT CustomerList.Name, CustomerList.Link, SUM(CustomerTrackingList.CustomerTracking) CustomerTracking, SUM(CustomerTrackingList.ClickCount) ClickCount " +
                    "FROM CustomerList JOIN CustomerTrackingList" +
                    "ON CustomerList.CustUUID = CustomerTracking.CustUUID" +
                    "WHERE CustomerTracking.date> 11/21/2006";

当我尝试在下面的代码隐藏文件中调用 sda.fill(dt) 时,我不断收到语法错误。语法是否正确,还是我缺少一些 asp.net 正在寻找的装饰器?这是 Visual Studio 向我展示的错误!

System.Data.SqlClient.SqlException: 'Incorrect syntax near '.'.'
using (SqlCommand cmd = new SqlCommand(command2))
{
    using (SqlDataAdapter sda = new SqlDataAdapter())
    {
        cmd.Connection = con;
        sda.SelectCommand = cmd;
        using (DataTable dt = new DataTable())
        {
           sda.Fill(dt);
           GridView2.DataSource = dt;
           GridView2.DataBind();
                            
        }
    }
}

标签: asp.netsql-serverdatabase

解决方案


您甚至没有提供错误,但是我可以立即看到您的日期没有被引用,应该是

WHERE t.CreateDate > '11/21/2006'

我建议始终使用 ISO 日期,例如“20061121”

如果你真的构建了你的字符串,你将把它发送到 SQLServer

SELECT b.Name, b.Link, SUM(t.ImpressionCount) as ImpressionCount, SUM(t.ClickCount) as ClickCount FROM Banner as b JOIN BannerTracking as **tIN** b.BannerId = **t.BannerIdWHERE** t.CreateDate > 11/21/2006

添加 -

确保在每个部分的末尾添加空格以确保它被正确解析。


推荐阅读