在SQL Server中合并2行

时间:2014-12-22 15:29:33

标签: sql sql-server select group-by

在表格或JOIN的某些结果中,存在2行具有相同Email但具有不同的其他值。

示例:

Email          -/- Operation1 (BIT) -/- Operation2 (BIT)
test@email.com -/- 1          -/- 0
test@email.com -/- 0          -/- 1

如何按Email对行进行分组,并按下一格式选择它们(根据样本)

Email          -/- Operation1 (BIT) -/- Operation2 (BIT)
test@email.com -/- 1          -/- 1

如果Operation1在一行中为TRUE,则在结果中返回TRUE

1 个答案:

答案 0 :(得分:0)

如您的位字段表中所述,以下查询将在SQL SERVER 2008中起作用

CREATE TABLE #temp
(
email VARCHAR(30),
Operation1 BIT,
Operation2 BIT
)

INSERT INTO #temp VALUES('test@email.com',1,0)
INSERT INTO #temp VALUES('test@email.com',0,1)

-- METHOD 1
SELECT email,
MAX(CASE WHEN Operation1 = 1 THEN 1 ELSE 0 END) AS Operation1,
MAX(CASE WHEN Operation2 = 1 THEN 1 ELSE 0 END) AS Operation2
FROM #temp GROUP BY email

-- METHOD 2
SELECT email,MAX(CONVERT(INT,Operation1)) AS Operation1,
MAX(CONVERT(INT,Operation2)) AS Operation2
FROM #temp GROUP BY email


--DROP TABLE #TEMP