sql - 分组时在输出中获取一列,但仅当分组列只有一行时才对该列进行分组

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

表1

t1Id
t1Name


表2

t2Id
t2Name

表1_表2_映射

t1Id
t2Id

在下面的查询中,作为输出中的第二列,我想要 t2Name 列,其中 Having COUNT(t1Id) = 1 并且我想要一些固定值('Common'),其中 COUNT(t1Id) > 1

Select t1Id 
from Table1_Table2_Mapping
Group By t1Id

提前致谢。

最佳答案

SELECT m.t1Id,
       CASE
         WHEN COUNT(*) = 1 THEN MAX(t2.t2Name)
         ELSE 'Common'
       END
FROM   Table1_Table2_Mapping m
       JOIN Table2 t2
         ON t2.t2Id = m.t2Id
GROUP  BY m.t1Id  

关于sql - 分组时在输出中获取一列,但仅当分组列只有一行时才对该列进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8833487/

相关文章:

sql - 语句 'for update' 是如何工作的?

php - 在 Ubuntu 中调用未定义的函数 odbc_connect()

sql-server - 使用 powershell 以事务方式创建数据库

asp.net - "Internal connection fatal errors"是什么原因造成的

sql - 分页表另一个Sql问题

SQLite3 API 的 C++ 包装器 - sqlite3pp 的替代品

mysql - 如何在不从数据库表复制数据的情况下创建表结构?

sql - 在批量插入期间删除/重建索引

sql-server-2005 - 使用 Wireshark 检查通过 SSL 的 SQL 连接的加密握手

sql - URL字段的全文搜索sql server