T-SQL分组方式;包含或不包含任何

T-SQL分组方式;包含或不包含任何,sql,sql-server,sql-server-2005,tsql,sql-server-2008,Sql,Sql Server,Sql Server 2005,Tsql,Sql Server 2008,SQL2005和/或SQL2008 在T-SQL中是否有任何类型的内置聚合,用于Contains或IfAny之类的内容?组中的任何一个都等于一个值? 与Max(xyz)=值类似,但不限于Max 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

SQL2005和/或SQL2008 在T-SQL中是否有任何类型的内置聚合,用于Contains或IfAny之类的内容?组中的任何一个都等于一个值? 与
Max(xyz)=值类似,但不限于Max

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
这适用于单值比较,如果它是最小值/最大值,但我希望类似于:

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
CASE MAX(CASE WHEN ProductGroup = 'G' THEN 1 ELSE 0 END)
   WHEN 1 THEN 'Have Ordered'
   ELSE 'Haven''t ordered'
END
如果我关心的值是Min/max,我可以使用Min(ProductGroup)=“A”,或者将from子句更改为(如果是“G”,则为0,否则为1 end),以创建一个伪最大值。目前我只关心一个值,但如果可能的话,我希望有更直观、更灵活的值。
有什么想法吗?

你最后的例子和我通常做的差不多。比如:

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
CASE MAX(CASE WHEN ProductGroup = 'G' THEN 1 ELSE 0 END)
   WHEN 1 THEN 'Have Ordered'
   ELSE 'Haven''t ordered'
END

其中,内部的
CASE
表达式显然将针对每一行进行计算,而外部的
CASE
表达式确定内部表达式是否成功。

另一种表达方式可以是任何类似的(列,“RegularExpression”)。这是不存在的,所以我仍然不知道一个解决方案。可能是@wilsjd的重复-我从不唠叨人们接受-如果他们坚持一段时间并参与进来,他们最终会找到解决办法。如果他们不留下来,唠叨他们可能是他们离开的另一个原因。而且,
peter
已经有2年多没有露面了,所以我怀疑这一点是否会被接受。@wilsjd——我最喜欢的例子是——如果
grady
出现并改变了他们被接受的答案,那么这一并列关系突然就被破坏了,我讨厌这样。