具有相同标记的两个布尔行的联合

时间:2013-04-15 09:40:29

标签: sql sql-server sql-server-2008 stored-procedures sql-server-2012

我有一个select语句,它返回每个标记的元素数组:

|TAG  | Bool1 | Bool2 | Bool3 |
|-----------------------------|
|tag1 |  0    |   1   |  0    |
|tag1 |  1    |   1   |  0    |
-------------------------------

我希望结果是两行与OR语句的并集:

_______________________________
|TAG  | Bool1 | Bool2 | Bool3 |
|-----------------------------|
|tag1 |  1    |   1   |  0    |
-------------------------------

2 个答案:

答案 0 :(得分:9)

SELECT TAG,
    CAST(MAX(CAST(Bool1 as int)) as bit) as Bool1,
    CAST(MAX(CAST(Bool2 as int)) as bit) as Bool2,
    CAST(MAX(CAST(Bool3 as int)) as bit) as Bool3
from Table group by TAG

似乎符合该法案,因为即使单行具有1值,也会克服其他行中的所有0

答案 1 :(得分:2)

请注意,MAX运算符不适用于BIT字段。如果您的字段不是CAST,则必须INT您的字段才能使用@Damien_The_Unbeliever提出的解决方案

附加我认为具有简单1/0值的字段可能有点