2016-09-11 9 views
0

選択値のみ

+----------------+-----+-------------+--------------+-----------+--------+ 
| id_vehicleCamp | vin | id_campaign | id_workorder | id_client | status | 
+----------------+-----+-------------+--------------+-----------+--------+ 
|    |  |    |    |   |  | 
+----------------+-----+-------------+--------------+-----------+--------+ 
|    |  |    |    |   |  | 
+----------------+-----+-------------+--------------+-----------+--------+ 

status列はをPENDING 2つだけの値APPLIEDまたはを持っています。私がする必要がどのような

は、一つ以上のstatus値を持つ列id_campaignにすべてdistinctの値を示している PENDING に等しいです。

例えば、私は、テーブル内のこのデータを持っている:

+----------------+-------+-------------+--------------+-----------+---------+ 
| 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 | 
+----------------+-------+-------------+--------------+-----------+---------+ 

最終的な出力をする必要がある:値1

+-------------------+ 
| Pending Campaings | 
+-------------------+ 
|   1   | 
+-------------------+ 
|   3   | 
+-------------------+ 

campaingはstatus APPLIED を有するが、持っています2ペンディングstatusは完了していません。

3とcampaingは、1つのレコードのみを持っているし、その後完了していない、status PENDING を持っています。

私は正しく説明したいと思います。コメントに投稿された質問。

答えて

1

使用条件の集約:このクエリは、このような多くのキャンペーンが保留中のエントリを持っていますが、一つだけ適用エントリー方法など、あなたが持つかもしれない他の質問に一般化すること

SELECT id_campaign 
FROM CampaingControl 
GROUP BY id_campaign 
HAVING SUM(CASE WHEN status = 'PENDING' THEN 1 ELSE 0 END) >= 1 

注意。

+1

おかげで、クエリが完璧に動作します! – TimeToCode

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

ご協力いただきありがとうございます。 – TimeToCode

-1


あなたにクエリを使用することができ、

SELECT id_vehicleCamp FROM TABLE_NAME WHERE id_vehicleCamp IN 
(SELECT DISTINCT STATUS FROM TABLE_NAME); 

このクエリは、あなたの結果を提供します。

0

また、動作するはずです:あなたのサポートのための

SELECT id_campaign FROM TABLE_NAME WHERE status = 'PENDING' GROUP BY id_campaign