首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加值的计数

添加值的计数
EN

Stack Overflow用户
提问于 2016-03-09 00:56:51
回答 2查看 17关注 0票数 1

还有其他方法可以用更少的代码来总结计数吗?

我正在使用一个视图(我唯一的选择)来试图找出一个客户是否在过去的5个日历年中的任何两个年里花了钱

表名: V_PERSON V_REVENUE

列: V_PERSON.ID

代码语言:javascript
复制
V.REVENUE.PersonID
V.REVENUE.Year1 revenue for the year (currently 2016)
V.REVENUE.Year2 revenue for the year (currently, 2015)
V.REVENUE.Year3
V.REVENUE.Year4
V.REVENUE.Year5

以下是我尝试过的:

代码语言:javascript
复制
SELECT V_PERSON.ID

FROM V_PERSON

WHERE 
(

(
SELECT '1'
FROM V_REVENUE
WHERE V_REVENUE.PersonID = V_PERSON.ID  
AND V_REVENUE.Year1 > 0
)

+

(
SELECT '1'
FROM V_REVENUE
WHERE V_REVENUE.PersonID = V_PERSON.ID  
AND V_REVENUE.Year2 > 0
)

+

(
SELECT '1'
FROM V_REVENUE
WHERE V_REVENUE.PersonID = V_PERSON.ID  
AND V_REVENUE.Year3 > 0
)

+

(
SELECT '1'
FROM V_REVENUE
WHERE V_REVENUE.PersonID = V_PERSON.ID  
AND V_REVENUE.Year4 > 0
)

+

(
SELECT '1'
FROM V_REVENUE
WHERE V_REVENUE.PersonID = V_PERSON.ID  
AND V_REVENUE.Year5 > 0
)

) >= 2
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-09 01:03:52

下面有一个使用exists和多个case语句的选项:

代码语言:javascript
复制
select id
from person p 
where exists (
    select 1
    from revenue r 
    where p.id = r.personid
        and case when r.year1 > 0 then 1 else 0 end +
            case when r.year2 > 0 then 1 else 0 end +
            case when r.year3 > 0 then 1 else 0 end +
            case when r.year4 > 0 then 1 else 0 end +
            case when r.year5 > 0 then 1 else 0 end >= 2
)
票数 1
EN

Stack Overflow用户

发布于 2016-03-09 01:03:37

CASE语句如何:

代码语言:javascript
复制
SELECT V_PERSON.ID
FROM V_PERSON
WHERE 
(
SELECT  (case when V_REVENUE.Year1 > 0 then 1 else 0 end) +  
    (case when V_REVENUE.Year2 > 0 then 1 else 0 end) +
    (case when V_REVENUE.Year3 > 0 then 1 else 0 end) +
    (case when V_REVENUE.Year4 > 0 then 1 else 0 end) +
    (case when V_REVENUE.Year5 > 0 then 1 else 0 end) 
FROM V_REVENUE
WHERE V_REVENUE.PersonID = V_PERSON.ID) >= 2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35881012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档