【发布时间】:2011-08-28 13:43:12
【问题描述】:
这是我的 T-SQL 查询
SELECT
ProductID,
VendorID,
ProductName= MAX(ProductName),
VendorName = MAX(VendorName),
IsActive = MAX(IsActive) # This brings error
FROM ProductVendorAssoc
GROUP BY
ProductID,
VendorID
我只想将GROUP BY 应用于ProductID and VendorID 字段,但需要填充ProductID, VendorID, ProductName, VendorName, IsActive 字段。
这里我使用了 agreggate 函数 MAX(ProductName) 来避免 group by 列表中的 ProductName。
但同样的技巧不适用于BIT 列,因为操作数数据类型位对 max 运算符无效。
我如何在SELECT 部分中包含BIT 类型列而不在GROUP BY 中包含它?
更新。
如果我需要以相同的方式在SELECT 中包含INT 之类的UserID 列,我应该怎么做
【问题讨论】:
-
这是 SQL Server 2008,但我也需要在 2005 年启动它
-
@marc_s 我从问题中省略了那部分查询
标签: sql tsql group-by aggregate