asp.net - 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();
}
}
}
解决方案
您甚至没有提供错误,但是我可以立即看到您的日期没有被引用,应该是
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
添加 -
确保在每个部分的末尾添加空格以确保它被正确解析。
推荐阅读
- angular - 提交动态生成的内容作为表单的一部分
- image-processing - CNN中3通道和1通道表示的灰度图像的区别?
- java - Cassandra 关闭导致:java.io.SyncFailedException:同步失败
- javascript - 基于字符串的运算符的弃用警告
- vim - Vim:将地图右移到正常模式(转义)
- reactjs - 如何在 i18next React 中刷新翻译?
- java - 在 chrome 浏览器中进行视觉验证时,为什么 Selenium 没有打开点击的链接?
- ssl - ldapsearch 无法建立安全连接
- rest - Adobe AIR 中的持久 HTTPS 连接
- excel - 将第一列中的文本拆分为几列