使用表变量时QSqlQuery不执行

时间:2017-09-28 17:23:12

标签: sql sql-server python-3.x pyqt

我使用Python 3和PyQt 5来执行包含表变量的查询。我的其他查询工作,但这个特定的查询导致我的问题。查询是:

declare @Temp table 
(
    SKU varchar(25), 
    Lines int
) 

insert into @Temp 
SELECT convert(varchar, [Sku]) as [SKU] 
    ,count([Order Number]) as [Lines] 
from [Database].dbo.[Table Name] 
GROUP BY [Sku] 
ORDER BY [LINES] 

Select RANK() OVER(Order by Lines Desc) / (Select Convert(float,Count(*)) from @Temp) as [CUM PERCENT SKU] 
    ,sum(Lines) Over(Order by Lines Desc) / convert(float,sum(Lines) Over()) as [CUM PERCENT LINES]
from @Temp 
Order By [Lines] DESC

我替换了数据库名称和表名,但文本的其余部分是确切的查询。

在SQL Server 2012中执行上述操作非常有效。我不知道QSql有限制吗?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

经过一番研究后,当你试图创建一个表(显然甚至是临时表)时,你需要使用prepare()。

我发布了答案,以防其他人遇到同样的问题,并且不想通过C ++ StackOverflow答案。

query = QSqlQuery()
query.prepare(*query text here*)
query.exec_()