Кристаллический эквивалент SQL NOT IN - PullRequest
0 голосов
/ 26 июля 2011

В подотчете Crystal

У меня есть таблица с именем individuals, другая таблица с именем attribute.

У индивидуума может быть несколько атрибутов.

Если у них есть определенный атрибут, я хочу исключить их из моих результатов.

В SQL я бы использовал подзапрос с: SELECT individual_ref WHERE NOT In (SELECT individual_ref from attribute where etc)

Такесли у меня не может быть подзапроса в кристалле, как я могу получить такой результат исключения?

Я думал об использовании хранимой процедуры, но не могу передать ей параметры в подотчете.

Есть идеи?

Спасибо

Ответы [ 2 ]

0 голосов
/ 15 августа 2011

Я часто использовал это решение.Это не элегантно, но работает:

  1. В вашем подотчете создайте формулу, которая называется что-то вроде HasBadAttribute_Num:

    if {a.id} in ["badAttr1", "badAttr2", "badAttr3"] then 1 else 0
    
  2. Создатьуровень группировки для индивидуума.

  3. Добавьте формулу выбора группы к этой группе:

    Sum({@HasBadAttribute_Num}, {a.individual_ref})
    
0 голосов
/ 26 июля 2011
SELECT i.individual_ref
    FROM individuals i
        LEFT JOIN attribute a
            ON i.individual_ref = a.individual_ref
                and a.attribute = @AttributeToExclude
    WHERE a.individual_ref IS NULL
...