在asp中执行时,MS SQL返回错误的结果

时间:2012-08-14 16:18:09

标签: sql select count group-by

我在经典ASP中使用的MS SQL语句遇到了一些问题。 当我在Microsoft SQL SMS中使用该语句时 - 我得到正确答案(4)但在ASP中我只得到结果2 ..

我想要的结果是有多少不同的艺术家有一个或多个已发布的项目。

我使用的陈述 -

SELECT Count(*) AS CountArtists 
FROM Tekster 
WHERE Published='True' 
GROUP BY Artist  

数据 - 表格(文本)

Artist    -   Published  
Person1       yes  
Person1       no  
Person1       yes  
Person2       yes  
Person3       yes  
Person3       no  
Person3       yes  
Person4       no  
Person4       no  
Person4       no  
Person5       no  
Person5       yes  
Person6       no  

5 个答案:

答案 0 :(得分:0)

确保两个查询的连接字符串相同。您可能会遇到与您认为不同的数据库。

另请注意,您的查询正在检查True,但您的数据显示yes/no。这是什么?

答案 1 :(得分:0)

当数据包含“是”和“否”时,为什么要说“published ='true'”。

尝试使用published ='yes'运行查询。

另外,如果你想要值4,那么你应该做“count(distinct artist)”而不是count(*)。

答案 2 :(得分:0)

如果您修复where子句,原始查询会为每位艺术家提供表格publishedyes|true的所有行的计数。一些人可能会得到零值。

要获得您想要的结果,并回答问题,“有多少不同的艺术家有一个或多个已发布的项目?”,您需要执行以下操作:

select count(*)
from ( select artist
       from Tekster
       where published = 'yes'
       group by artist
       having count(*) > 1
     ) published_artist pa

虚拟表(子查询)为您提供已发布的艺术家集。外部查询为您提供已发布艺术家的数量。

答案 3 :(得分:0)

SELECT COUNT(DISTINCT艺术家)AS来自Tekster的CountArtists WHERE已发布=' True'

答案 4 :(得分:0)

如果已发布的字段数据类型为位,则使用Published = 1