我有下表CampaingControl
:
+----------------+-----+-------------+--------------+-----------+--------+
| id_vehicleCamp | vin | id_campaign | id_workorder | id_client | status |
+----------------+-----+-------------+--------------+-----------+--------+
| | | | | | |
+----------------+-----+-------------+--------------+-----------+--------+
| | | | | | |
+----------------+-----+-------------+--------------+-----------+--------+
status
列只有两个值 APPLIED 或 PENDING 。
我需要做的是显示distinct
列中的所有id_campaign
值,其中一个或多个status
值等于待定
例如,我在表格中有这些数据:
+----------------+-------+-------------+--------------+-----------+---------+
| id_vehicleCamp | vin | id_campaign | id_workorder | id_client | status |
+----------------+-------+-------------+--------------+-----------+---------+
| 1 | 43006 | 1 | OT-001-16 | NULL | PENDING |
+----------------+-------+-------------+--------------+-----------+---------+
| 2 | 43010 | 1 | OT-002-16 | 2 | PENDING |
+----------------+-------+-------------+--------------+-----------+---------+
| 3 | 43009 | 1 | OT-002-16 | NULL | APPLIED |
+----------------+-------+-------------+--------------+-----------+---------+
| 4 | 43008 | 2 | OT-002-16 | NULL | APPLIED |
+----------------+-------+-------------+--------------+-----------+---------+
| 5 | 43002 | 3 | OT-005-16 | 4 | PENDING |
+----------------+-------+-------------+--------------+-----------+---------+
最终输出必须是:
+-------------------+
| Pending Campaings |
+-------------------+
| 1 |
+-------------------+
| 3 |
+-------------------+
值1
的活动有一个 APPLIED status
,但2
有 PENDING status
,然后没有完成。
价值3
的活动只有一条记录并且待处理 status
,然后没有完成。
答案 0 :(得分:2)
SELECT id_campaign AS [Pending Campaings] FROM CampaingControl
WHERE status = 'PENDING' GROUP BY id_campaign HAVING COUNT(*) >= 1
OR
SELECT DISTINCT id_campaign AS [Pending Campaings] FROM CampaingControl
WHERE status = 'PENDING'
答案 1 :(得分:1)
使用条件聚合:
SELECT id_campaign
FROM CampaingControl
GROUP BY id_campaign
HAVING SUM(CASE WHEN status = 'PENDING' THEN 1 ELSE 0 END) >= 1
请注意,此查询会推广到您可能遇到的其他问题,例如有多少个广告系列有两个待处理条目但只有一个已应用条目。
答案 2 :(得分:0)
它也应该有效:
SELECT id_campaign FROM TABLE_NAME WHERE status = 'PENDING' GROUP BY id_campaign
答案 3 :(得分:-1)
您可以将查询用作
SELECT id_vehicleCamp FROM TABLE_NAME WHERE id_vehicleCamp IN
(SELECT DISTINCT STATUS FROM TABLE_NAME);
此查询提供您的结果。