SQL替换为别名

时间:2016-05-30 15:17:51

标签: sql sql-server tsql replace

我们正在尝试替换列中某些项的输出以缩短它们(即信息会话到信息会话)。使用我们当前的SQL,替换函数似乎不允许该语句在我们的环境中运行。承认,我是使用替换功能的新手,并不确定它是否以正确的方式使用。请指教!

select [Date], [Time], [Event], [Students], [Guests]
from (
select
    e.[id],
    format(e.[date], 'h:mm tt') as [Time],
    e.[date],
    replace('Information Session','Information','Info') e.[summary] as [Event],
  (
    select count(*) 
    from [event.registration] 
    where [event] = e.[id] and [cancelled] is null
    ) as [Students],
  (
  select sum([guests]) 
  from [event.registration] 
  where [event] = e.[id] and [cancelled] is null
  ) as [Guests]
from [event] e
where e.[category] 
in ('Campus Visit', 'Information Session', 'Campus Tour', 'Athletics and    Wellness Tour') and format(e.[date], 'MM/dd/yyyy') = format(getdate(), 'MM/dd/yyyy')

) base
order by [Time] asc

1 个答案:

答案 0 :(得分:0)

整个查询对我来说有点奇怪。对于你回来的ewach行,你会向注册表,count(*)和sum(guest)做2个额外的查询。

这可能不是问题,但对于大表,您会遇到性能问题和可能的表锁。

我建议整理一下:

cmdS.Parameters.Clear();

我还将您的WHERE格式(例如[日期],' MM / dd / yyyy')替换为日期,以减少查询中的操作。

可能存在一些错误,但由于我无法访问您的表定义,因此很难进行测试。