Re:Seldomly Used SQL: The Bool Aggregate Functions
by MSM on Thursday May 05, 2016 @03:00PM
(#11638846)
I think instead of trying to shoehorn the "AND" that he discusses in the article into a case statement you'd just look for each category to see if there has been a non expressed delivered package.
SELECT
category,
ISNULL(NonExpress.NonExpress, 0) AS ever_been_non_express_delivered
FROM @orders O
OUTER APPLY (
SELECT TOP 1 1 as [NonExpress]
FROM @Orders O2
WHERE O2.Category = O.Category
AND express_delivered = 0
) NonExpress
GROUP BY category
Edit: Changed the logic up, the original code's field was contradicting my logic.
Re:Seldomly Used SQL: The Bool Aggregate Functions
by nickpeterson on Thursday May 05, 2016 @03:24PM
(#11638995)
How about:
CASE WHEN MIN(express_delivered) = 0 THEN 0 ELSE 1 END AS always_been_express_delivered
select category case when sum(express_delivered) = count(express_delivered) then 1 else 0 end as always_been_express_delivered from etc.