This is a bug in Magento core, that was fixed in version 1.9.3. If using an older version, you can try this fix: https://github.com/biotech/Magento1.9-CatalogPriceRulesFix or try this solution:
public function prepareConditionSql()
{
$alias = 'cpf';
$attribute = $this->getAttribute();
$value = $this->getValue();
$operator = $this->correctOperator($this->getOperator(), $this->getInputType());
if ($attribute == 'category_ids') {
$alias = 'ccp';
$attribute = 'category_id';
$value = $this->bindArrayOfIds($value);
}
// Andre Klang: This fixes issue with "is one of" & "is not one of"
if(!is_array($value) && in_array($operator,array('()','!()'))) {
$tmp = explode(',',$value);
foreach($tmp as $trim) $values[] = trim($trim);
$value = $values;
}
/** @var $ruleResource Mage_Rule_Model_Resource_Rule_Condition_SqlBuilder */
$ruleResource = $this->getRuleResourceHelper();
return $ruleResource->getOperatorCondition($alias . '.' . $attribute, $operator, $value);
}
Source: Catalog Price Rule containing several SKU-s doesn't work
Edit: To get a fast solution you can try this, as posted in the linked question:
ANY condition is TRUE
SKU "is one of" sku1
SKU "is one of" sku2