是否可以在SQL Server 2008中将2行合并为一行?
+--------------+--------+--------+
| Part Number | Site 1 | Site 2 |
+--------------+--------+--------+
| 1 | True | False |
| 1 | False | True |
+--------------+--------+--------+
期望的结果
+--------------+--------+--------+
| Part Number | Site 1 | Site 2 |
+--------------+--------+--------+
| 1 | True | True |
+--------------+--------+--------+
谢谢
答案 0 :(得分:0)
这取决于你对merge的意思,但是你当然可以使用SET获取数据并覆盖另一个上面的记录。虽然这可以完全在SQL中完成,但最好将其构建到应用程序中。
UPDATE [dbo].[mytable]
SET
[Site 1] = ([Site 1] | source.[Site 1]),
[Site 2] = ([Site 2] | source.[Site 2])
FROM
(
SELECT
[Part Number],
[Site 1],
[Site 2]
FROM [dbp].[mytable]
WHERE
[Part Number] = 2
) source
WHERE
[Part Number] = 1;
DELETE FROM [dbo].[mytable] WHERE [Part Number] = 2;
我相信这应该有用,虽然我还没有对它进行测试...而且它假设零件号是要合并的,因为在上面的例子中,零件号2似乎合并到零件号1
答案 1 :(得分:0)
请尝试以下代码
create table temp
(part_number varchar(10),
site1 varchar(10),
site2 varchar(10))
insert into temp(part_number)
select part_number from temp_table
group by part_number
update t
set site1=temp_table.site1
From temp t
inner join temp_table
on t.part_number=temp_table.part_number
where site1='True'
update t
set site2=temp_table.site2
From temp t
inner join temp_table
on t.part_number=temp_table.part_number
where site2='True'
答案 2 :(得分:0)
感谢大家的答案,但我认为最简单的方法是
Select
CASE WHEN Sum(CONVERT(int,Site1))>0 Then 1 else 0 end as Site1,
CASE WHEN Sum(CONVERT(int,Site2))>0 Then 1 else 0 end as Site2
from myTable