27,579
社区成员
发帖
与我相关
我的任务
分享
cname kdate mintime maxtime
名字1 2011-9-1 8:00 17:30
名字2 2011-9-2 9:00 17:00
... ... ... ...
2011-9-1 2011-9-2 。。。
名字1 maxtime-mintime maxtime-mintime
... ... ...
drop table #kaoqin
create table #kaoqin
(
cname nvarchar(50),
yy_mm nvarchar(50),
mintime nvarchar(50),
maxtime nvarchar(50)
)
insert into #kaoqin (cname,yy_mm,mintime,maxtime) select
x.usralias, CONVERT(varchar(10), y.OpenTime, 120) AS yy_mm,
CONVERT(varchar(8), MIN(y.OpenTime), 8) AS mintime,
CONVERT(varchar(8), MAX(y.OpenTime), 8) AS maxtime
FROM dbo.ShhmJanitorRecordhis y right join shhmcmscardinfo x on x.cardid=y.cardid
GROUP BY x.usralias, CONVERT(varchar(10), y.OpenTime, 120)
--select * from #kaoqin
declare @sql varchar(8000)
set @sql = 'select cname '
select @sql = @sql + ' , max(case yy_mm when ''' + yy_mm + ''' then ltrim(maxtime) + ''-'' + ltrim(mintime) else '''' end) [' + yy_mm + ']'
from (select distinct yy_mm from #kaoqin) as a
set @sql = @sql + ' from #kaoqin group by cname'
exec(@sql)
(123 行受影响)
消息 156,级别 15,状态 1,第 1 行
关键字 'from' 附近有语法错误。
CREATE TABLE [dbo].[kaoqin](
[cname] [nvarchar](50) NULL,
[yy_mm] [nvarchar](50) NULL,
[mintime] [nvarchar](50) NULL,
[maxtime] [nvarchar](50) NULL
)
insert kaoqin
select '名字1','2011-9-1','8:00','17:30' union all
select '名字2','2011-9-2','9:00','17:00' union all
select '名字1','2011-9-3','10:00','17:30' union all
select '名字1','2011-9-4','8:30','17:30'
declare @sql varchar(8000)
set @sql = 'select cname '
select @sql = @sql + ' , max(case yy_mm when ''' + yy_mm + ''' then ltrim(maxtime) + ''-'' + ltrim(mintime) else '''' end) [' + yy_mm + ']'
from (select distinct yy_mm from kaoqin) as a
set @sql = @sql + ' from kaoqin group by cname'
exec(@sql)
cname 2011-9-1 2011-9-2 2011-9-3 2011-9-4
-------------------------------------------------- ----------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------
名字1 17:30-8:00 17:30-10:00 17:30-8:30
名字2 17:00-9:00
(2 行受影响)
declare @sql varchar(8000)
set @sql = 'select cname '
select @sql = @sql + ' , max(case yy_mm when ''' + yy_mm + ''' then ltrim(maxtime)+ltrim(mintime) else '''' end) [' + yy_mm + ']'
from (select distinct yy_mm from kaoqin) as a
set @sql = @sql + ' from kaoqin group by cname'
exec(@sql)
CREATE TABLE [dbo].[kaoqin](
[cname] [nvarchar](50) NULL,
[yy_mm] [nvarchar](50) NULL,
[mintime] [nvarchar](50) NULL,
[maxtime] [nvarchar](50) NULL
) ON [PRIMARY]
declare @sql varchar(8000)
set @sql = 'select cname '
select @sql = @sql + ' , max(case yy_mm when ''' + yy_mm + ''' then mintime else null end) [' + yy_mm + ']'
from (select distinct yy_mm from kaoqin) as a
set @sql = @sql + ' from kaoqin group by cname'
exec(@sql)
then mintime else null end
这里改掉就可以了select
cname,
max(case when convert(varchar(10),kdate,120)='2011-9-1' then ltrim(mintime)+'-'+ltrim(maxtime) else '' end) as '2011-9-1' ,
...
from
tb
group by
cname