sql - T-SQL 分组依据;包含或如果有

标签 sql sql-server sql-server-2005 tsql sql-server-2008

SQL2005 和/或 SQL2008
在 T-SQL 中,是否有任何类型的内置聚合,用于包含或 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 结束的情况)来创建一个假最大值。目前我只关心一个值,但如果可能的话,我想要更直观和灵活的东西。
有任何想法吗?

最佳答案

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

CASE MAX(CASE WHEN ProductGroup = 'G' THEN 1 ELSE 0 END)
   WHEN 1 THEN 'Have Ordered'
   ELSE 'Haven''t ordered'
END

凡内CASE表达式显然将针对每一行进行评估,而外部 CASE表达式确定内部表达式是否成功。

关于sql - T-SQL 分组依据;包含或如果有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7790057/

相关文章:

sql-server - 以不同的名称附加带有全文目录的数据库?

.net - 内存中 OleDb 连接到 Excel 文件

sql - 高效地根据 "filter"表从一张表中获取结果

c# - 在 SQL Server 身份验证中执行存储过程所需的角色

SQL 外部应用条件

mysql - SQL查询获取数据

sql-server - 如何配置复制? - 该数据库未启用发布

sql-server - sql server合并两个表中的值

mysql - 将 SQL Server 查询转换为 MySQL

python - 从 oracle 获取随机行的最有效方法