求一SQL语句,在线等待,解决后马上给分!

liyin_first 2005-08-25 11:20:31
两张表:
as_TaskAccomplished,字段:TaskCompletedId(主建),ProjectId(as_Project的外建),TaskName(nvarchar),SubmitedOn(日期)
as_Project,字段:ProjectId(主建),Goal(nvarchar)

现在需要返回一个table,
包含3列:SubmitedOn,TaskNameOneDay(同一天内的TaskName的组合),ProjectGoal(根据同一天内,也就是SubmitedOn字段,通过ProjectId关联到as_Project表上的Goal所有Goal的组合)


我初步考虑了一下,应该是用ORDER BY SubmitedOn来进行分类,然后通过一些类似与AVG的自定义函数来组合TaskName合Goal。但是实在是水平不够,希望高手能够指点一下。
...全文
125 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vivianfdlpw 2005-08-25
  • 打赏
  • 举报
回复
--创建获取TaskName的函数
create function f_TaskName(@dt varchar(10))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+TaskName from as_TaskAccomplished
where convert(varchar(10),SubmitedOn,120)=@dt
if @str is null
return ''
return stuff(@str,1,1,'')
end
go

--创建获取ProjectGoal的函数
create function f_ProjectGoal(@dt varchar(10))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+Goal from as_Project
where ProjectId in (
select ProjectId from as_TaskAccomplished where convert(varchar(10),SubmitedOn,120)=@dt
)
if @str is null
return ''

return stuff(@str,1,1,'')
end
go

--调用
select *,
[TaskNameOneDay]=dbo.f_TaskName(SubmitedOn),
[ProjectGoal]=dbo.f_ProjectGoal(SubmitedOn)
from
(select [SubmitedOn]=convert(varchar(10),SubmitedOn,120)
from as_TaskAccomplished
group by convert(varchar(10),SubmitedOn,120)
)t
vivianfdlpw 2005-08-25
  • 打赏
  • 举报
回复
--创建获取TaskName的函数
create function f_TaskName(@dt varchar(10))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+TaskName from as_TaskAccomplished
where convert(varchar(10),SubmitedOn,120)=@dt
return stuff(@str,1,1,'')
end
go

--创建获取ProjectGoal的函数
create function f_ProjectGoal(@dt varchar(10))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+Goal from as_Project
where ProjectId in (
select ProjectId from as_TaskAccomplished where convert(varchar(10),SubmitedOn,120)=@dt
)
return stuff(@str,1,1,'')
end
go

--调用
select [SubmitedOn]=convert(varchar(10),SubmitedOn,120),
[TaskNameOneDay]=dbo.f_TaskName(SubmitedOn),
[ProjectGoal]=dbo.f_ProjectGoal(SubmitedOn)
from
(select [SubmitedOn]=convert(varchar(10),SubmitedOn,120)
from as_TaskAccomplished
group by convert(varchar(10),SubmitedOn,120)
)t
zlp321002 2005-08-25
  • 打赏
  • 举报
回复
--合并要写合并函数吧!
--类似这样的问题吧!楼主参考下:
有表內容﹕
編號 內容
A abc
A aaa
A dddd
B 1223
B fkdjfd
....

實現結果﹕
A abc,aaa,dddd
B 1223,fkdjfd
要求用一條SQL實現﹐如﹕select sum(內容) from table group by 編號

--该问题,写一个合并函数,后,分组合并既可!

--测试数据
create Table 表(編號 varchar(20),內容 varchar(20))
insert 表 select 'A','abc'
union all select 'A','aaa'
union all select 'A','dddd'
union all select 'B','1223'
union all select 'B','fkdjfd'


--处理分组合并函数学
Create Function JoinStr(@SNO as varchar(20))
returns varchar(200)
begin
declare @s as varchar(8000)
set @s=''
select @s=@s+','+ltrim(rtrim(內容)) from
(
select 內容 from 表 where 編號=@SNO
)
A
set @s=stuff(@s,1,1,'')
return @s
end

--查询语句
select 編號,dbo.JoinStr(編號) as 内容 from 表 group by 編號

--测试结果:
編號 内容
A abc,aaa,dddd
B 1223,fkdjfd

frank_laic 2005-08-25
  • 打赏
  • 举报
回复

CREATE TABLE tb(col1 varchar(10),col2 varchar(10))
insert tb select 'A','abc'
union all select 'A','aaa'
union all select 'A','dddd'
union all select 'B','1223'
union all select 'B','fkdjfd'

DECLARE @t TABLE(col1 varchar(10),col2 varchar(100))

DECLARE tb CURSOR LOCAL
FOR
SELECT col1,col2 FROM tb ORDER BY col1,col2
DECLARE @col1_old varchar(10),@col1 varchar(10),@col2 varchar(10),@s varchar(100)
OPEN tb
FETCH tb INTO @col1,@col2
SELECT @col1_old=@col1,@s=''
WHILE @@FETCH_STATUS=0
BEGIN
IF @col1=@col1_old
SELECT @s=@s+','+CAST(@col2 as varchar)
ELSE
BEGIN
INSERT @t VALUES(@col1_old,STUFF(@s,1,1,''))
SELECT @s=','+CAST(@col2 as varchar),@col1_old=@col1
END
FETCH tb INTO @col1,@col2
END
INSERT @t VALUES(@col1_old,STUFF(@s,1,1,''))
CLOSE tb
DEALLOCATE tb

SELECT * FROM @t

DROP TABLE tb
liyin_first 2005-08-25
  • 打赏
  • 举报
回复
实在不好意思,中午断网了。等会测试了,马上给分!

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧