我在经典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
答案 0 :(得分:0)
确保两个查询的连接字符串相同。您可能会遇到与您认为不同的数据库。
另请注意,您的查询正在检查True
,但您的数据显示yes/no
。这是什么?
答案 1 :(得分:0)
当数据包含“是”和“否”时,为什么要说“published ='true'”。
尝试使用published ='yes'运行查询。
另外,如果你想要值4,那么你应该做“count(distinct artist)”而不是count(*)。
答案 2 :(得分:0)
如果您修复where
子句,原始查询会为每位艺术家提供表格published
为yes|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