T-SQL Group By; 包含或IfAny

Pet*_*ter 5 sql t-sql sql-server sql-server-2005 sql-server-2008

SQL2005和/或SQL2008在T-SQL中是否存在任何类型的内置聚合,包含Contains或IfAny或其他什么?组中任何一个等于值的东西?类似于Max(xyz)=value但不限于最大值.

Select custID, case when Min(ProductGroup)= "A" then 'Have Ordered Group A' else 'Haven't Ordered Group A' end hasOrdered
from orders
inner join products on ordPoductId = productID
group by custID
Run Code Online (Sandbox Code Playgroud)

这适用于单个值比较,如果它是最小/最大,但我想要类似的东西:

Select custID, case when contains(ProductGroup, "G") then 'Have Ordered Group G' else 'Haven't Ordered Group G' end hasOrdered
from orders
inner join products on ordPoductId = productID
group by custID
Run Code Online (Sandbox Code Playgroud)

我可以使用Min(ProductGroup)="A",如果我关注的值是min/max或者将from-clause更改为('G'然后0其他1结束的情况)以创建假最大值.目前我只关注单个值,但如果可能的话,我想要更直观和灵活的东西.有任何想法吗?

Dam*_*ver 12

你最后的例子与我通常做的很接近.就像是:

CASE MAX(CASE WHEN ProductGroup = 'G' THEN 1 ELSE 0 END)
   WHEN 1 THEN 'Have Ordered'
   ELSE 'Haven''t ordered'
END
Run Code Online (Sandbox Code Playgroud)

其中内CASE表达显然将针对每一行进行评估,而外部CASE表达决定内表达是否曾经成功.