SQL查询问题,求命啊。。。
车主号码 车牌号码车量类型
13413000966LS152701
13413000966LS158601
13413010139L4380602
13413010139L7Q39207
13413011709LM587702
13413011709LM588102
13413049887L5X69707
13413049887L5X79307
13413051190L9V00507
13413051190LN301207
13413051190L8V09607
像上面这样的表,如何将车牌号码和类型合并到一个另一个表生成如下格式:
车主号码 备注
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)
set @s= ' '
select @s=@s+ '车牌号码: '+车牌号码+ ' 车辆类型: '+车量类型+ ' ' from car where 车主号码=@no
return @s
end
select distinct 车主号码,dbo.f_gets(车主号码) as '备注 ' from car
[解决办法]
SQL Server 2000中常用的两种方法:
1、写个字定义函数,如鱼上面的方式
2、用游标
使用函数是最简单的方式。