请教一个SQL存储过程中的查询问题

jcxpy910 2016-03-22 08:45:30
如图:我查询的是3月21日这一天的数据。但是datagridview中将所有时间的列都显示出来了(虽然里面的值没显示,但是日期多了的话就很麻烦)。要怎么修改这个存储过程,才能达到只显示查询的日期的数据而不是所有的日期都显示出来。

存储过程如下:
ALTER PROCEDURE [dbo].[dy]

@mm varchar(100),
@nn varchar(100),
@aa varchar(100)
as

Declare @sql varchar(MAX)

Set @sql = 'Select Name as 姓名 '




SELECT @sql = @sql + ',MAX(case 时间 when ''' + 时间
+ ''' then Result end) [' + 时间 + CHAR(10) + '周'
+ RTRIM(DATEPART(dw , DATEADD(dd , -1 , 时间))) + ']'
from (select distinct convert(varchar(10),时间,120) as 时间 from cj ) as cj

--Select @sql = @sql+' from cj where Name ='''+@mm+'''and 时间='''+@nn+''' GROUP by name,科室'
Select @sql = @sql+' from cj where 时间 between '''+@nn+'''and '''+@aa+''' and 科室='''+@mm+''' group by Name '
Exec (@sql)

版主大哥再帮帮忙吧
@中国风
...全文
70 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jcxpy910 2016-03-22
  • 打赏
  • 举报
回复
恩,我自己刚才也解决了。和你的一样,不过还要把MAX改成MIN才行。 还是谢谢你,嘿嘿
唐诗三百首 2016-03-22
  • 打赏
  • 举报
回复
try this,

ALTER PROCEDURE [dbo].[dy]
@mm varchar(100),
@nn varchar(100),
@aa varchar(100)
as
 
declare @sql varchar(MAX)
 
Set @sql = 'Select  Name as 姓名 '

SELECT  @sql = @sql + ',MAX(case 时间 when ''' + 时间
        + ''' then Result end) [' + 时间 + CHAR(10) + '周'
        + RTRIM(DATEPART(dw , DATEADD(dd , -1 , 时间))) + ']'
from (select distinct convert(varchar(10),时间,120) as 时间  
          from cj
          where 时间 between @nn and @aa) cj  
 
Select @sql = @sql+' from cj where 时间 between '''+@nn+'''and '''+@aa+''' and 科室='''+@mm+''' group by Name '
Exec (@sql)

34,590

社区成员

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

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