2017-11-13 1 views
0

NAME 및 ACTIVE_FLAG 열을 포함하는 STATUSES 테이블이 있습니다. NAME의 열 값에 새로운 보류 중 취소가있을 수 있습니다. 나는 다른 상태에 가입 할 수 있다면 난에 계산 어쨌든, 하나의 이름에 대한 레코드를 선택하는 EXISTS를 사용하여 생각하여복수 선택을 위해 SQL에 EXISTS 사용

SELECT COUNT(*) AS PENDING 
FROM STATUSES 
WHERE EXISTS (select NAME from STATUSES where NAME='Pending' and ACTIVE_FLAG = 'Y') 

을 ACTIVE_FLAG 각 NAME의 수에 대한 새로운 출력 = Y

을 생성 할 단일 SQL?

+2

편집 질문 및 제공을 샘플 데이터 및 원하는 결과. –

+3

정확히 사용하는 이유는 무엇입니까? where 필터를 직접 사용하지 않는 이유는 무엇입니까? – Scarnet

+0

^^ @Scarnet 그건 마치 가게에가는 것과 같습니다. 가게에 가려면 .. – Zak

답변

0

내가 EXISTS 사용 할 필요를 참조하지 않는 한이 같은 것을 사용할 수 있습니다

SELECT sum(case when name='Pending' then 1 else 0 end) AS PENDING, 
sum(case when name='new' then 1 else 0 end) AS NEW, 
sum(case when name='cancel' then 1 else 0 end) AS CANCEL 
FROM STATUSES 
WHERE ACTIVE_FLAG = 'Y' 

SQL HERE

+0

고마워요. 작동합니다 – user2102665

+0

문제가 해결되었습니다. [누군가 내 질문에 대답 할 때 무엇을해야합니까?] (https://stackoverflow.com/help/someone-answers) –

+0

사례 조건의 여러 테이블에 참여하고 싶습니다. ALERT_CASE_HEADER -alert_key ALERT_ITEM -entity_key -entity_name = '활성 경고'두 테이블을 연결하는 alert_key 및 entity_key를 사용 : 나는이 개 여분의 테이블을 가지고있다. 두 키가 같은 값이고 entity_name = '활성 경고'인 경우에만 합계가 발생합니다.이 경우 ACTIVE_FLAG는 더 이상 필요하지 않습니다. – user2102665

1

보인다 count 추천하고 group by

SELECT 
    name 
    , count(*) 
FROM statuses 
WHERE active_flag = 'Y' 
GROUP BY name 
관련 문제