我想在gridview的列标题和
中显示特定月份的日期应在
下显示相应的值选择
不同
cardno,名字,
min(convert(char(5),time,108))over(cardno分区,CONVERT(varchar(20),time,
102))+'| '+ max(转换(char(5),时间,108))(cardno分区,
CONVERT(varchar(20),time,102))[exit / in out]
FROM Events
以下是上述查询的输出
cardno name退出/退出 100白菜09:30 | 18:30 101 kiran 09:55 | 18:45
我想要像这样的输出
cardno name 2013-07-01 2013-07-12 ................................... 2013年7月31日
100 baiju 09:30 | 18:30 null
101 kiran 09:35 | 18:45 null
表示应该在gridview标题中显示整月中的日期。如果没有值,则应该为null
我试过这个例子,但显示错误
将@dte声明为datetime ='2013-07-01'
将@StDt声明为Datetime = DATEADD(dd, - (DAY(GETDATE()) - 1),@ dte)
将@EnDt声明为datetime = DATEADD(s,-1,DATEADD(mm,DATEDIFF(m,0,@ dte)+1,0))
将@Cnt声明为int = datepart(dd,@ EnDt)
将@inc声明为int = 0
创建表#temp(Month_date datetime)
而@inc< @cnt
开始
插入#temp
选择DATEADD(dd,@ cinc,DATEADD(dd, - (DAY(@dte)-1),@ dte))
设置@inc = @inc + 1 结束 DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX)
选择@cols = STUFF((SELECT distinct','+ QUOTENAME([date]) 从事件 FOR XML PATH(''),TYPE ).value('。','NVARCHAR(MAX)') ,1,1, '')
SET @ Query ='SELECT distinct cardno,name,'+ @ cols +' 来自( 选择t.Month_date,e.cardno,e.date 来自#temp t t.Month_date = e.date上的右外连接事件 ) X 枢 ( min(convert(char(5),time,108))over(cardno分区,CONVERT(varchar(20),time,102))+'| '+ max(convert(char(5),time,108))over(cardno,CONVERT(varchar(20),time,102)
for date in (' + @cols + ')
)p 按Month_date'
排序EXEC(@query)
drop table #temp
这是错误消息
Msg 207,Level 16,State 1,Line 19
无效的列名称'date'。
Msg 402,Level 16,State 1,Line 36
数据类型nvarchar(max)和varchar在“|”中不兼容操作
如何解决这个问题
此致
白菊