日期:2014-05-18  浏览次数:20442 次

SQL查询问题,求命啊。。。
车主号码                   车牌号码 车量类型
13413000966 LS1527 01
13413000966 LS1586 01
13413010139 L43806 02
13413010139 L7Q392 07
13413011709 LM5877 02
13413011709 LM5881 02
13413049887 L5X697 07
13413049887 L5X793 07
13413051190 L9V005 07
13413051190 LN3012 07
13413051190 L8V096 07
像上面这样的表,如何将车牌号码和类型合并到一个另一个表生成如下格式:
车主号码                   备注
13413000966 车牌号码:LS1527   车辆类型:01     车牌号码:LS1586   车辆类型:01
13413010139 车牌号码:L43806   车辆类型:02     车牌号码:L7Q392     车辆类型:07
急....

------解决方案--------------------
--建立測試環境
Create Table TEST
(车主号码 Varchar(11),
车牌号码 Varchar(10),
车辆类型 Char(2))
--插入數據
Insert TEST Select '13413000966 ', 'LS1527 ', '01 '
Union All Select '13413000966 ', 'LS1586 ', '01 '
Union All Select '13413010139 ', 'L43806 ', '02 '
Union All Select '13413010139 ', 'L7Q392 ', '07 '
Union All Select '13413011709 ', 'LM5877 ', '02 '
Union All Select '13413011709 ', 'LM5881 ', '02 '
Union All Select '13413049887 ', 'L5X697 ', '07 '
Union All Select '13413049887 ', 'L5X793 ', '07 '
Union All Select '13413051190 ', 'L9V005 ', '07 '
Union All Select '13413051190 ', 'LN3012 ', '07 '
Union All Select '13413051190 ', 'L8V096 ', '07 '
GO
--建立函數
Create Function F_TEST(@车主号码 Varchar(11))
Returns Nvarchar(2000)
As
Begin
Declare @S Nvarchar(4000)
Select @S = ' '
Select @S = @S + N ' 车牌号码: ' + 车牌号码 + N ' 车辆类型: ' + 车辆类型 From TEST Where 车主号码 = @车主号码
Select @S = Stuff(@S, 1, 2, ' ')
Return @S
End
GO
--測試
Select
车主号码,
dbo.F_TEST(车主号码) As 备注
From
TEST
Group By
车主号码
GO
--刪除測試環境
Drop Table TEST
Drop Function F_TEST
--結果
/*
车主号码 备注
13413000966 车牌号码:LS1527 车辆类型:01 车牌号码:LS1586 车辆类型:01
13413010139 车牌号码:L43806 车辆类型:02 车牌号码:L7Q392 车辆类型:07
13413011709 车牌号码:LM5877 车辆类型:02 车牌号码:LM5881 车辆类型:02
13413049887 车牌号码:L5X697 车辆类型:07 车牌号码:L5X793 车辆类型:07
13413051190 车牌号码:L9V005 车辆类型:07 车牌号码:LN3012 车辆类型:07 车牌号码:L8V096 车辆类型:07
*/
------解决方案--------------------
create table car(车主号码 varchar(20),车牌号码 varchar(10),车量类型 varchar(10))
insert into car
select '13413000966 ', 'LS1527 ', '01 '
union select '13413000966 ', 'LS1586 ', '01 '
union select '13413010139 ', 'L43806 ', '02 '
union select '13413010139 ', 'L7Q392 ', '07 '
union select '13413011709 ', 'LM5877 ', '02 '
union select '13413011709 ', 'LM5881 ', '02 '
union select '13413049887 ', 'L5X697 ', '07 '
union select '13413049887 ', 'L5X793 ', '07 '
union select '13413051190 ', 'L9V005 ', '07 '
union select '13413051190 ', 'LN3012 ', '07 '
union select '13413051190 ', 'L8V096 ', '07 '

create function f_gets(@no varchar(20))
returns nvarchar(4000)
as
begin
declare @s nvarchar(4000)