我正在使用以下查询
create table #Attendence (id int identity(1,1),det varchar(2000))
insert into #Attendence (det )
select --convert(char(10),@Date,3) +REPLICATE(' ', 20 - LEN(convert(char(10),@Date,3)))+
staff.StaffNAme +REPLICATE(' ', 20 - LEN(staff.StaffNAme ))+
case Att.FN when 1 then 'Present'
else 'Absent'
end +REPLICATE(' ', 20 - LEN(case Att.FN when 1 then 'Present'
else 'Absent'
end ))+
case Att.AN when 1 then 'Present'
else 'Absent'
end +REPLICATE(' ', 20 - LEN(case Att.AN when 1 then 'Present'
else 'Absent'
end ))
from Staff_Details staff
inner join
STAFF_Attendance att
on staff.staffid=att.staffId
Select * from #Attendence
问题出在结果集中,因为STaffName的长度增加,staffname右边的值向右移动。任何人都可以帮助使每列固定长度吗?
答案 0 :(得分:2)
create table #Attendence (id int identity(1,1),det varchar(2000))
insert into #Attendence (det )
select --cast(convert(char(10),@Date,3) as char(20)) +
cast(staff.StaffNAme as char(20)) +
cast(case Att.FN when 1 then 'Present' else 'Absent' end as char(20)) +
cast(case Att.AN when 1 then 'Present' else 'Absent' end as char(20))
from Staff_Details staff
inner join
STAFF_Attendance att
on staff.staffid=att.staffId
Select * from #Attendence
答案 1 :(得分:0)
我猜Staffname有尾随空格。 这些将被LEN忽略。
尝试此操作以强制确定20个字符的长度:
LEFT(staff.StaffNAme + ' ', 20)
......而不是......
staff.StaffNAme + REPLICATE(' ', 20 - LEN(staff.StaffNAme))