在 SQL 中对多个 select 使用 EXISTS
Use EXISTS in SQL for multiple select
我有一个 table STATUSES,其中包含列 NAME 和 ACTIVE_FLAG.The 列 NAME 的值可能有新的、未决的、取消的。我想用 ACTIVE_FLAG=Y
为每个 NAME 的计数生成一个新输出
通过考虑使用 EXISTS
到 select 记录单个 NAME,
SELECT COUNT(*) AS PENDING
FROM STATUSES
WHERE EXISTS (select NAME from STATUSES where NAME='Pending' and ACTIVE_FLAG = 'Y')
不管怎样,如果我能加入其他状态算在一个SQL?
好像是 count
和 group by
SELECT
name
, count(*)
FROM statuses
WHERE active_flag = 'Y'
GROUP BY name
你可以使用这样的东西,因为我认为没有必要使用 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'
我有一个 table STATUSES,其中包含列 NAME 和 ACTIVE_FLAG.The 列 NAME 的值可能有新的、未决的、取消的。我想用 ACTIVE_FLAG=Y
为每个 NAME 的计数生成一个新输出通过考虑使用 EXISTS
到 select 记录单个 NAME,
SELECT COUNT(*) AS PENDING
FROM STATUSES
WHERE EXISTS (select NAME from STATUSES where NAME='Pending' and ACTIVE_FLAG = 'Y')
不管怎样,如果我能加入其他状态算在一个SQL?
好像是 count
和 group by
SELECT
name
, count(*)
FROM statuses
WHERE active_flag = 'Y'
GROUP BY name
你可以使用这样的东西,因为我认为没有必要使用 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'