Dim JBPsql As String = "SELECT 公司销量.商品编码, 公司销量.商品名称, 公司销量.规格, 公司销量.生产厂家, 公司销量.采购价," _ & "sum(公司销量.成交金额)/sum(公司销量.数量) as 均价, (sum(公司销量.成交金额)-sum(公司销量.采购价*公司销量.数量))/sum(公司销量.成交金额) as 毛利率, sum(公司销量.数量) as 销量, sum(公司销量.成交金额) as 金额,公司销量.采购员," _ & "sum(JBP品种.剩余可售) as JBP库存,sum(品种信息.数量) as 公司库存 FROM 公司销量 INNER JOIN JBP品种 ON 公司销量.商品编码 = JBP品种.商品编码 INNER JOIN 品种信息 ON JBP品种.商品编码 = 品种信息.商品编号 " _ & " having ( 公司销量.商品编码 like @spxx or 公司销量.商品名称 like @spxx ) and 公司销量.平台='聚宝盆' and datediff(day,@qsri,公司销量.日期)>=0 and datediff(day,公司销量.日期,@zzrq)>=0 and sum(公司销量.成交金额) > 0 and sum(公司销量.数量)>0 group by " _ & " 公司销量.商品编码, 公司销量.商品名称, 公司销量.规格, 公司销量.生产厂家, 公司销量.采购价,公司销量.采购员" 'order by sum(公司销量.成交金额) desc " Dim JBPcmd As New SqlCommand(JBPsql, conn) JBPcmd.Parameters.AddWithValue("@spxx", "%" + Replace(Trim(UCase(TextBoxX1.Text)), Chr(13) + Chr(10), "") + "%") JBPcmd.Parameters.AddWithValue("@qsri", DateTimeInput1.Value) JBPcmd.Parameters.AddWithValue("@zzrq", DateTimeInput2.Value) Dim adapter As New SqlDataAdapter(JBPcmd) 这段代码提示group 附近错误
时间: 2024-03-21 12:44:19 浏览: 105
数据库连接字在Web.config里的用法
根据您提供的代码,group 附近的语法错误可能是由于 SQL 查询中的 having 子句中包含了聚合函数,而 group by 子句中未包含所有非聚合列。请确保在 group by 子句中包含所有 non-aggregated 列,如下所示:
```
SELECT
公司销量.商品编码,
公司销量.商品名称,
公司销量.规格,
公司销量.生产厂家,
公司销量.采购价,
sum(公司销量.成交金额)/sum(公司销量.数量) as 均价,
(sum(公司销量.成交金额)-sum(公司销量.采购价*公司销量.数量))/sum(公司销量.成交金额) as 毛利率,
sum(公司销量.数量) as 销量,
sum(公司销量.成交金额) as 金额,
公司销量.采购员,
sum(JBP品种.剩余可售) as JBP库存,
sum(品种信息.数量) as 公司库存
FROM 公司销量
INNER JOIN JBP品种 ON 公司销量.商品编码 = JBP品种.商品编码
INNER JOIN 品种信息 ON JBP品种.商品编码 = 品种信息.商品编号
WHERE
公司销量.平台='聚宝盆'
AND 公司销量.商品编码 LIKE @spxx
AND 公司销量.商品名称 LIKE @spxx
AND DATEDIFF(day,@qsri,公司销量.日期)>=0
AND DATEDIFF(day,公司销量.日期,@zzrq)>=0
AND sum(公司销量.成交金额) > 0
AND sum(公司销量.数量) > 0
GROUP BY
公司销量.商品编码,
公司销量.商品名称,
公司销量.规格,
公司销量.生产厂家,
公司销量.采购价,
公司销量.采购员
HAVING
sum(公司销量.成交金额)/sum(公司销量.数量) > 0
ORDER BY
sum(公司销量.成交金额) DESC
```
此外,您也可以在 SELECT 子句中包含所有 non-aggregated 列,而不需要在 GROUP BY 子句中列出它们。但是,这样做可能会使查询变得冗长。如果您使用的是 SQL Server 2005 及更高版本,则可以使用 ROLLUP 或 CUBE 子句来汇总数据并生成子汇总行。
阅读全文