要写很多重复类似的语句,有什么好方法?

proton0012004 2006-11-22 04:14:32
要写一个静态交叉表的代码(不使用动态交叉表主要是在查询量还不到实际查询量的十分之一进行测试时,速度已经慢地不行了),里面会有很多大量重复的类似语句,比如:“SUM(CASE 日期 WHEN '20060207' THEN 现手 ELSE NULL END) AS [20060207],”
之类的。其中的20060207是不断变化的,未了省点时间,也未了避免出错,我就想有没有办法来直接实现在查询分析器里print出语句来,这样直接复制一把以求省事又不出错。
试写了语句:





declare @c int,
@d varchar(100),
@e char(3000)
select @c=1

while @c<6
begin
select @d=(case @c when 1 then '20060207'
when 2 then '20060208'
when 3 then '20060209'
when 4 then '20060210'
when 5 then '20060213'
else '0'
end)

在此中间部分就是想用这种循环及print来做出大量类似这样的语句:“SUM(CASE 日期 WHEN '20060207' THEN 现手 ELSE NULL END) AS [20060207],”
其中的日期就用变量@d去替换。

select @c=@c+1
if @c>5
break
else
continue
end






试了很久做不出来,请高人看看怎么做,谢谢!

另,我在实际操作中要写500行这样的语句,如果用这个循环能写出来我就只需每个

日期写一遍,这样省点时间不说,还不容易出错,而且一旦出错也容易检查。


...全文
144 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
proton0012004 2006-11-22
  • 打赏
  • 举报
回复
麻烦赐教,我试着写了点,就是出不来,老是出错。
谢谢!

marco08 2006-11-22
  • 打赏
  • 举报
回复
可以用動態SQL
proton0012004 2006-11-22
  • 打赏
  • 举报
回复
其实就是如何用print语句把
SUM(CASE 日期 WHEN '20060207' THEN 现手 ELSE NULL END) AS [20060207],
这样的语句写出很多来,而其中的数字‘20060207’是递变的,其递变就想借助上面所写的循环
语句,这样的话每循环一次就打出一句来,而且每次循环的递变数字用变量@d,

最终想要的结果是在查询分析器的查询结果处显示为:
SUM(CASE 日期 WHEN '20060207' THEN 现手 ELSE NULL END) AS [20060207],
SUM(CASE 日期 WHEN '20060208' THEN 现手 ELSE NULL END) AS [20060208],
SUM(CASE 日期 WHEN '20060209' THEN 现手 ELSE NULL END) AS [20060209],
SUM(CASE 日期 WHEN '20060210' THEN 现手 ELSE NULL END) AS [20060210],

这样的一长串可以使用的语句。
xiaoku 2006-11-22
  • 打赏
  • 举报
回复
好像 不大明白你说的是?
xiaoku 2006-11-22
  • 打赏
  • 举报
回复
好像 不大明白你说的是?

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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