SQL行合并的有关问题

SQL行合并的问题
本帖最后由 qm2010429 于 2014-06-17 10:51:32 编辑

Name       from             to
QWCE      NPI         ESI
QWCE    ESI         MP
QWCE    MP          NPI
QWCE    NPI          ESI
Test01    NPI                ESI

---------------------------------------------------------------------
如上所示,搜索出来的结果是这样子的,但是我想要的结果最好是下面这样的,可不可以?

Name            from           to
QWCE           NPI             ESI
Test01           NPI             ESI

-------------------------------------------------------------------------------------------------------------
就是说相同Name的合并为一条,from是第一条的,to是最后一条的。
------解决方案--------------------
----------------------------------------------------------------
-- Author  :DBA_HuangZJ(发粪涂墙)
-- Date    :2014-06-17 10:58:16
-- Version:
--      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
-- Apr  2 2010 15:48:46 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([Name] nvarchar(12),[from] nvarchar(6),[to] nvarchar(6))
insert [huang]
select 'QWCE','NPI','ESI' union all
select 'QWCE','ESI','MP' union all
select 'QWCE','MP','NPI' union all
select 'QWCE','NPI','ESI' union all
select 'Test01','NPI','ESI'
--------------生成数据--------------------------
;WITH cte AS (
select * ,ROW_NUMBER()OVER(PARTITION BY name ORDER BY GETDATE())id
from [huang])
SELECT name,MAX([from])[from],MIN([to])[to]
FROM (
SELECT name,(SELECT [from] cte WHERE id=1 AND name=a.name)[from],(SELECT [to] cte WHERE id >=all(SELECT id FROM cte WHERE name=a.name))[to]
FROM cte a)a
GROUP BY name
----------------结果----------------------------
/* 
name         from   to
------------ ------ ------
QWCE         NPI    ESI
Test01       NPI    ESI
*/