SQL行合并的有关问题
SQL行合并的问题
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是最后一条的。
------解决方案--------------------
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
*/