繁体   English   中英

当所有值均为0时从查询返回true

[英]Return true from query when all values are 0

我有这个

id   number  stock
1    555     1
2    555     0
3    444     0

当所有值在同一数字上均为0时,我想返回true。 号码555为假,因为库存为1。 数字3是正确的,因为所有库存值均为0。

我怎样才能做到这一点?

你可以这样做:

select 
  number,
  case
    when min(stock) = 0 and max(stock) = 0 then 'true'
    else 'false'
  end as TrueOrFalse
from TheTable
group by number

该查询将返回number列中的所有不同值,以及相应的true / false状态。

这是一个现场演示: http ://www.sqlfiddle.com/#!9/ 61c82/1

如果要显示所有行的指示器,请尝试此操作

WITH cte
     AS (SELECT Count(CASE WHEN stock = 0 THEN 1 END)OVER(partition BY number) f_count,
                Count(1)OVER(partition BY number) AS t_count,*
         FROM   Yourtable)
SELECT id,
       number,
       stock,
       Indicator=CASE WHEN f_count <> t_count THEN 'False' ELSE 'True' END
FROM   cte 

SQL FIDDLE DEMO

SELECT number,
       CASE WHEN COUNT(CASE WHEN stock <> 0 THEN 1 END) = 0 
       THEN 'true' ELSE 'false' END
FROM dbo.TableName
GROUP BY number

演示版

你可以用这个

select number,stock,
    case when sum(stock)=0 then 'true' else 'false' end AS Staus  
    from #temp group by number,stock

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM