首页 新闻 赞助 找找看

咨询sql 问题

0
悬赏园豆:10 [已解决问题] 解决于 2015-05-20 16:48

sql循环出来的查询语句是否能union all 起来

 

ALTER PROCEDURE [dbo].[proc_SelectEntprCardMagCount]
    @Year VARCHAR(50)
AS
BEGIN
    declare @i int
    set @i=1
    WHILE @i <=12
    BEGIN
        SELECT ''+CONVERT(VARCHAR(23),@i,23)+'' 时间,dbo.Fun_TotalEntprCardMag('建设单位',@Year,@i) '建设单位',dbo.Fun_TotalEntprCardMag('施工单位',@Year,@i) '施工单位'
        ,dbo.Fun_TotalEntprCardMag('监理单位',@Year,@i) '监理单位',dbo.Fun_TotalEntprCardMag('安拆单位',@Year,@i) '安拆单位'
        SET @i=@i+1
    END
END

EXEC dbo.proc_SelectEntprCardMagCount '2015' -- varchar(50)

查询出来的结果

 

现在想实现如下结果:

请问下,sql循环中是否可以?

最初的、天空的主页 最初的、天空 | 初学一级 | 园豆:40
提问于:2015-05-20 16:01
< >
分享
最佳答案
0

你都已经WHILE了,还问能不能循环?

你需要临时表,请古鸽 SQL SERVER 临时表。

收获园豆:10
爱编程的大叔 | 高人七级 |园豆:30839 | 2015-05-20 16:08

临时表是可以,但是我有个@year的参数怎么传递进去?

最初的、天空 | 园豆:40 (初学一级) | 2015-05-20 16:41

@最初的、天空:

你可以在存储过程或者FUNCTION中创建一个临时表

然后把你那些数据insert into 临时表,

然后再

Select * from 临时表

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-05-20 16:43

@最初的、天空: 我刚刚写好了语句,你就关闭问题了。

  

SELECT CAST(number AS varchar(2))+'月' 时间 ,
dbo.Fun_TotalEntprCardMag('建设单位', @Year, @i) '建设单位' ,
dbo.Fun_TotalEntprCardMag('施工单位', @Year, @i) '施工单位' ,
dbo.Fun_TotalEntprCardMag('监理单位', @Year, @i) '监理单位' ,
dbo.Fun_TotalEntprCardMag('安拆单位', @Year, @i) '安拆单位'
FROM master..spt_values
WHERE type = 'P'
AND number BETWEEN 1 AND 12

隔壁老王来了 | 园豆:99 (初学一级) | 2015-05-20 16:56

@醉心: 后面的@i改成number

隔壁老王来了 | 园豆:99 (初学一级) | 2015-05-20 16:57

@醉心: 已经搞定了。 谢谢你了

最初的、天空 | 园豆:40 (初学一级) | 2015-05-20 18:09
其他回答(3)
0

查出来的结果 插入临时表,在返回?

czd890 | 园豆:14292 (专家六级) | 2015-05-20 16:07
0

借鉴SQL SERVER 临时表。

请叫我头头哥 | 园豆:9382 (大侠五级) | 2015-05-20 16:09
0
alter proc p
@year nvarchar(64)
as

create table #Temp
(
    Name nvarchar(64)
)

将你的数据循环插入到临时表。



drop table #temp
需要格局 | 园豆:2145 (老鸟四级) | 2015-05-20 16:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册