【发布时间】:2011-10-17 06:21:06
【问题描述】:
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
这适用于单个值比较,如果它是最小值/最大值,但我想要类似的东西:
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
如果我关心的值是最小值/最大值,我可以使用 Min(ProductGroup)="A" 或将 from 子句更改为 ('G' 时的情况然后 0 else 1 end) 创建一个假的最大值。目前我只关心一个值,但如果可能的话,我想要更直观和灵活的东西。 有什么想法吗?
【问题讨论】:
-
另一种说法可能是 AnyLike(columns, 'RegularExpression')。那不存在,所以我仍然不知道解决方案。
标签: sql sql-server sql-server-2005 tsql sql-server-2008