永洪社区

标题: 有个sql语法的问题请教一下 [打印本页]

作者: 阿姆斯特朗炮    时间: 2022-3-7 15:38
标题: 有个sql语法的问题请教一下
写了一个sql,有个orderby排序,不写top就报错,写了就不报错但是在外面数据库中执行就没问题,请问啥问题?

sql语句
SELECT TOP 100000 a.WarehouseGuid, SUM(a.FinalQuantity) Quantity
FROM dbo.STK_Storage a
LEFT JOIN (SELECT WarehouseGuid, MaterialGuid, COUNT(Guid) RowsCount FROM dbo.STK_Storage WHERE BillTypeCode = 'STK_OutWarehouse' GROUP BY WarehouseGuid, MaterialGuid) d ON a.WarehouseGuid = d.WarehouseGuid AND a.MaterialGuid = d.MaterialGuid
WHERE a.OrderNO2 = '99990101999000010001'
GROUP BY a.WarehouseGuid, a.MaterialGuid, d.RowsCount
ORDER BY d.RowsCount DESC


作者: Fiona    时间: 2022-3-7 15:38
yhdata_S2N0KkXt 发表于 2022-3-8 09:12
sqlserver里查询是没有任何问题的,查过这个问题,是在嵌套查询中有排序的会有这个问题,但是这个语句嵌 ...

是的,sqlserver里查询是直接将这段sql直接执行了。
但在永洪BI里,加了一层子查询,所以抛错了。见图。这是永洪数据处理的实现导致。建议您去掉最后一句order by:ORDER BY d.RowsCount DESC

作者: 环环    时间: 2022-3-7 15:49
同样的sql在数据库是可以用的吗,去掉上方的sql解析器试试呢
作者: 阿姆斯特朗炮    时间: 2022-3-7 16:19
永洪tech-秀秀 发表于 2022-3-7 15:49
同样的sql在数据库是可以用的吗,去掉上方的sql解析器试试呢

同样的sql在数据库中是没有任何问题的,刚试了一下,去掉sql解析器也不行呢
作者: 环环    时间: 2022-3-7 17:02
不行就加上top呢,这个报错数据库本身也是存在的,就是加上top就可以
作者: 阿姆斯特朗炮    时间: 2022-3-7 17:05
永洪tech-秀秀 发表于 2022-3-7 17:02
不行就加上top呢,这个报错数据库本身也是存在的,就是加上top就可以

恩,加上可以用,但是这是一个问题,以后审sql得解释
作者: 环环    时间: 2022-3-7 17:20
用的什么数据库,数据库和永洪分别是什么版本呢
作者: 阿姆斯特朗炮    时间: 2022-3-7 17:24
永洪tech-秀秀 发表于 2022-3-7 17:20
用的什么数据库,数据库和永洪分别是什么版本呢

数据库用的sqlserver,永洪用的desktop9.4.1
作者: Fiona    时间: 2022-3-7 20:26
yhdata_S2N0KkXt 发表于 2022-3-7 17:05
恩,加上可以用,但是这是一个问题,以后审sql得解释

这是SQLServer自己的语法限制呢,您网上查一下SQL的这个错误
作者: 阿姆斯特朗炮    时间: 2022-3-8 09:12
Fiona 发表于 2022-3-7 20:26
这是SQLServer自己的语法限制呢,您网上查一下SQL的这个错误

sqlserver里查询是没有任何问题的,查过这个问题,是在嵌套查询中有排序的会有这个问题,但是这个语句嵌套查询里是没有排序的
作者: 阿姆斯特朗炮    时间: 2022-3-8 09:47
Fiona 发表于 2022-3-8 09:45
是的,sqlserver里查询是直接将这段sql直接执行了。
但在永洪BI里,加了一层子查询,所以抛错了。见图。这 ...

好的,明白了,也就是这边查询后,其实框架中还嵌套了一层,明白了,谢谢




欢迎光临 永洪社区 (https://club.yonghongtech.com/) Powered by Discuz! X3.4