SQL 使用不同条件两次使用相同字段

标签 sql

我有一个计数标题(voucher_credits.voucher_id),我已经使用 WHERE 语句将其添加到我的报告中,但我想使用不同的条件将其再次添加为另一列,如何才能我这样做?

SELECT vouchers.code, vouchers.credit, count(voucher_credits.voucher_id) as Activated
FROM vouchers, voucher_credits, users
WHERE vouchers.id = voucher_credits.voucher_id
    AND voucher_credits.remaining_credit = 0
    AND users.id = voucher_credits.user_id AND users.state = 'active'
    AND vouchers.is_customer_service = FALSE
GROUP by vouchers.code, vouchers.credit
ORDER by count(voucher_credits.voucher_id) DESC
LIMIT 100

第二列是 users.state = 'cancelled' 而没有 .remaining_credit = 0

最佳答案

尝试 UNION ALL:

SELECT vouchers.code, vouchers.credit, count(voucher_credits.voucher_id) as Activated
FROM vouchers, voucher_credits, users
WHERE vouchers.id = voucher_credits.voucher_id
  AND voucher_credits.remaining_credit = 0
  AND users.id = voucher_credits.user_id AND users.state = 'active'
  AND vouchers.is_customer_service = FALSE
GROUP by vouchers.code, vouchers.credit
ORDER by count(voucher_credits.voucher_id) DESC
UNION ALL
SELECT vouchers.code, vouchers.credit, count(voucher_credits.voucher_id) as Activated
FROM vouchers, voucher_credits, users
WHERE vouchers.id = voucher_credits.voucher_id
  AND users.state = 'cancelled' 
  AND users.id = voucher_credits.user_id AND users.state = 'active'
  AND vouchers.is_customer_service = FALSE
GROUP by vouchers.code, vouchers.credit
ORDER by count(voucher_credits.voucher_id) DESC

关于SQL 使用不同条件两次使用相同字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20464192/

相关文章:

使用 UCanAccess 保存数据时 Java 应用程序挂起

mysql - 在 SQL 中创建消息列表

java - 我应该同步 DataSource 的 getConnection() 吗

sql - Azure Synapse - 检索插入的行标识值

mysql - GROUP BY + SUM 在 where 子句中

sql - 在 SQL Server 2008 R2 Express 中清理主数据库中的用户表

mysql - SQL:打破平局

sql - 如何在android sql搜索中使用[charlist]通配符

php - mysql 查询连接和速度/替代数据库解决方案是否必要?

sql - 如何使用计数和分组依据作为另一个表的条件