Относится с репликации FN в SQL - PullRequest
0 голосов
/ 01 марта 2010

Я использую следующий запрос

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 увеличивается, значения справа от имени сотрудника перемещаются вправо. Может ли кто-нибудь помочь сделать каждый столбец фиксированной длины?

Ответы [ 2 ]

2 голосов
/ 26 февраля 2011
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
0 голосов
/ 01 марта 2010

Я думаю, что у Staffname есть пробелы. Они будут проигнорированы LEN.

Попробуйте сделать так, чтобы длина составляла 20 символов:

LEFT(staff.StaffNAme + '                    ', 20)

... вместо ...

staff.StaffNAme + REPLICATE(' ', 20 - LEN(staff.StaffNAme))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...