[英]Is it possible to merge 2 rows into a single row in SQL Server 2008?
在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 |
+--------------+--------+--------+
谢谢
这将取决于合并的含义,但是您当然可以使用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中
请尝试以下代码
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'
谢谢你们的回答,但我认为最简单的方法是
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.