select * from formtable_main_20
sp_help formtable_main_20
--drop view zcountQJ01
create view zcountQJ01
as
select appman ,year(startdata) as zyear,jb,cast(sum(num) as decimal(4,1) ) as num
from formtable_main_20
where year(getdate()) = year(startdata)
group by appman,jb,year(startdata)
select * from zcountQJ01
--drop function fn_str
--创建函数
CREATE function dbo.fn_strqj(@var_appman int)
returns varchar(100)
as
begin
declare @var varchar(100)
set @var=''
select @var=@var+
-- cast(jb as varchar(10))
case jb
when 0 then '事假'
when 1 then '病假'
when 2 then '婚假'
when 3 then '丧假'
when 4 then '哺乳假'
when 5 then '探亲假'
when 6 then '公休假'
when 7 then '年假'
when 8 then '其他'
when 8 then '护理假'
end
+':'+cast(num as varchar(10))+',' from [zcountQJ01] where appman=@var_appman
--select @var=@var+':'+cast(num as varchar(10))+',' from [zcountQJ01] where jb=@var_appman
if len(@var)>0
set @var=left(@var,len(@var)-1)
else
set @var=' '
return(@var)
end
--drop view zcountQJ02
create view zcountQJ02
as
select distinct appman,year(getdate()) as zyear ,dbo.fn_strqj(appman) as num from [zcountQJ01]
go
select * from zcountQJ02
select (10.50,1)
--参考
--------------
學號 選修課
07001 语文
07001 数学
07001 英语
查詢結果
學號 選修課
07001 語文;數學;英語
---------回复--------------
create function dbo.uf_gets(@学号 varchar(10))
returns varchar(100)
as
begin
declare @s varchar(100)
set @s= ' '
select @s=@s+ '; '+选修课 from 表 where 学号=@学号
set @s=stuff(@s,1,1, ' ')
return @s
end
go
select 学号,dbo.uf_gets(学号) as '选修课 ' from 表
---------回复--------------
--創建函數
Create Function F_TEST(@學號 Varchar(100))
Returns Nvarchar(1000)
As
Begin
Declare @S Nvarchar(1000)
Select @S = ' '
Select @S = @S + '; ' + 選修課 From 表 Where 學號 = @學號
Select @S = Stuff(@S, 1, 1, ' ')
Return @S
End
GO
--測試
Select
學號,
dbo. F_TEST( 學號) As 選修課
From
表
Group By
學號
---------回复--------------
又慢了
---------回复--------------
--創建測試環境
Create Table 表
(學號 Varchar(100),
選修課 Nvarchar(100))
Insert 表 Select '07001 ', N '语文 '
Union All Select '07001 ', N '數學 '
Union All Select '07001 ', N '英語 '
GO
--創建函數
Create Function F_TEST(@學號 Varchar(100))
Returns Nvarchar(1000)
As
Begin
Declare @S Nvarchar(1000)
Select @S = ' '
Select @S = @S + '; ' + 選修課 From 表 Where 學號 = @學號
Select @S = Stuff(@S, 1, 1, ' ')
Return @S
End
GO
--測試
Select
學號,
dbo. F_TEST(學號) As 選修課
From
表
Group By
學號
GO
--刪除測試環境
Drop Table 表
Drop Function F_TEST
--結果
/*
學號選修課
07001语文;數學;英語
*/
---------回复--------------
用函数是正解!
---------回复--------------
前面幾個老大都寫好了,函數可以的
---------回复--------------
楼上的前辈都在正确答案!
---------回复--------------
如果是多个 学号呢.
---------回复--------------
clbenben() ( ) 信誉:100 2007-07-19 14:36:25 得分: 0
如果是多个 学号呢.
------------------
以上函數同樣可以適用多個學號的。
---------回复--------------
--創建測試環境
Create Table 表
(學號 Varchar(100),
選修課 Nvarchar(100))
Insert 表 Select '07001 ', N '语文 '
Union All Select '07001 ', N '數學 '
Union All Select '07001 ', N '英語 '
Union All Select '07002 ', N '數學 '
Union All Select '07002 ', N '英語 '
Union All Select '07003 ', N '英語 '
GO
--創建函數
Create Function F_TEST(@學號 Varchar(100))
Returns Nvarchar(1000)
As
Begin
Declare @S Nvarchar(1000)
Select @S = ' '
Select @S = @S + '; ' + 選修課 From 表 Where 學號 = @學號
Select @S = Stuff(@S, 1, 1, ' ')
Return @S
End
GO
--測試
Select
學號,
dbo. F_TEST(學號) As 選修課
From
表
Group By
學號
GO
--刪除測試環境
Drop Table 表
Drop Function F_TEST
--結果
/*
學號選修課
07001语文;數學;英語
07002數學;英語
07003英語
*/