Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择类别并统计其中的广告_Sql_Sql Server - Fatal编程技术网

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成功了!!!发布你的答案!