Sql 选择类别并统计其中的广告
我想做一个查询,选择类别名称并计算每个类别中活动广告的最大数量,我已经这样做了:Sql 选择类别并统计其中的广告,sql,sql-server,Sql,Sql Server,我想做一个查询,选择类别名称并计算每个类别中活动广告的最大数量,我已经这样做了: SELECT cat.cat_id, cat.cat_desc, COUNT(ad_id) AS cat_total_ads FROM tab_categories AS cat LEFT JOIN tab_ads AS ads ON ads.cat_id = cat.cat_id WHERE cat_active = @cat_active AND cat_deleted = @cat_deleted GROU
SELECT
cat.cat_id,
cat.cat_desc,
COUNT(ad_id) AS cat_total_ads
FROM
tab_categories AS cat LEFT JOIN
tab_ads AS ads ON ads.cat_id = cat.cat_id
WHERE
cat_active = @cat_active AND
cat_deleted = @cat_deleted
GROUP BY
cat_desc, cat.cat_id
此查询也在统计非活动广告。如何将非活动广告的值设置为0?实现这一点的一种方法是使用语句组合来确定是否要对项目和函数进行计数 比如说
SUM(CASE WHEN Active THEN 1 ELSE 0 END)
实现这一点的一种方法是使用语句的组合来确定是否要对项和函数进行计数 比如说
SUM(CASE WHEN Active THEN 1 ELSE 0 END)
SUM案。。。。。然后1或0结束,因为colName应该为您完成此操作 试试这个,我没有要重新创建的表来测试,但是这个或类似的东西应该可以工作
select
cat.cat_id,
cat.cat_desc,
count(ad_id) as Total,
sum(case when ad_id= 0 then 1 else 0 end) as 'ad_id'
from
tab_categoriesAS cat LEFT JOIN
tab_ads AS ads ON ads.cat_id = cat.cat_id
WHERE
cat_active = @cat_active AND
cat_deleted = @cat_deleted
GROUP BY
cat_desc, cat.cat_id
SUM案。。。。。然后1或0结束,因为colName应该为您完成此操作 试试这个,我没有要重新创建的表来测试,但是这个或类似的东西应该可以工作
select
cat.cat_id,
cat.cat_desc,
count(ad_id) as Total,
sum(case when ad_id= 0 then 1 else 0 end) as 'ad_id'
from
tab_categoriesAS cat LEFT JOIN
tab_ads AS ads ON ads.cat_id = cat.cat_id
WHERE
cat_active = @cat_active AND
cat_deleted = @cat_deleted
GROUP BY
cat_desc, cat.cat_id
你能解释更多关于列名的内容吗?这太没有说明性了。我不确定你的设置到底是什么,但你可以做的一个技巧是当激活时使用SumCASE,然后使用1或0,可能有更好的方法,但在不知道更多的情况下,很难说。@Jack成功了!!!发布你的答案!你能解释更多关于列名的内容吗?这太没有说明性了。我不确定你的设置到底是什么,但你可以做的一个技巧是当激活时使用SumCASE,然后使用1或0,可能有更好的方法,但在不知道更多的情况下,很难说。@Jack成功了!!!发布你的答案!