Почему это происходит?
blockquote>Поскольку {} и do / end имеют разный приоритет. {} является «более сильным». Как в «связано с ближайшим вызовом метода». Таким образом, этот
p foo { something }
виден следующим образом.
p (foo { something })
И do / end выглядит так
p(foo) do something end
Нет ошибки, просто пропустите часть кода
blockquote>Да, из-за другой функции рубина. Что означает «вы можете передать блок методу ЛЮБОЙ, а затем этот метод должен использовать или игнорировать его». Здесь
p
не ожидает блока и просто игнорирует его.
Использование HAVING
:
SELECT Document
FROM @TableA A
JOIN @TableB B
ON B.IdWord = A.IdWord
WHERE Word IN ('A', 'B','C', 'E')
GROUP BY Document
HAVING COUNT(DISTINCT CASE WHEN Word IN ('A','B', 'C') THEN Word END) = 3
OR COUNT(DISTINCT CASE WHEN Word IN ('E') THEN Word END) = 1