У меня уже есть несколько таблиц, и я выполнил некоторую работу.
Мое окончательное состояние ..
declare @tmptblC table(
rowIndex int identity(1,1) not null,
Officer varchar(40),
Date varchar(20),
Total_Served int,
Total_Serving_Time varchar(16),
Avg_Serving_Time varchar(16),
Log_In_Time varchar(16),
Log_Off_Time varchar(16),
Served_by_Hour int,
Total_Tran_Served int,
Total_Tran_Time varchar(16),
Avg_Tran_Time varchar(16),
Avg_Tran_Per_Cus float);
Я объявил таблицу @tmptblC
declare @dt datetime;
set @dt=cast('01-01-1980' as datetime);
insert into @tmptblC
select
loginname as 'Officer',
CONVERT(VARCHAR(10), regdate, 105) as 'Date',
count(distinct(queueno)) as 'Total_Served',
CONVERT(varchar(6), sum(datediff(second,nexttime,endtime))/3600)+ ':' + RIGHT('0' + CONVERT(varchar(2), (sum(datediff(second,nexttime,endtime)) % 3600) / 60), 2)+ ':' + RIGHT('0' + CONVERT(varchar(2), sum(datediff(second,nexttime,endtime)) % 60), 2) as 'Total_Serving_Time',
CONVERT(varchar(6), avg(datediff(second,nexttime,endtime))/3600)+ ':' + RIGHT('0' + CONVERT(varchar(2), (avg(datediff(second,nexttime,endtime)) % 3600) / 60), 2)+ ':' + RIGHT('0' + CONVERT(varchar(2), avg(datediff(second,nexttime,endtime)) % 60), 2) as 'Avg_Serving_Time',
CONVERT(VARCHAR(8), min(nexttime), 108) as 'Log_In_Time',
CONVERT(VARCHAR(8), max(nexttime), 108) as 'Log_Off_Time',
isnull(nullif(3600/datediff(second, @dt,
cast(('01-01-1980 '+
cast(CONVERT(varchar(6), avg(datediff(second,nexttime,endtime))/3600)+ ':' + RIGHT('0' + CONVERT(varchar(2), (avg(datediff(second,nexttime,endtime)) % 3600) / 60), 2)+ ':' + RIGHT('0' + CONVERT(varchar(2), avg(datediff(second,nexttime,endtime)) % 60), 2) as varchar(30)))
as datetime)),0),0) as 'Served_by_Hour',
sum(matter_served) as 'Total_Tran_Served',
CONVERT(varchar(6), sum(matter_time)/3600)+ ':' + RIGHT('0' + CONVERT(varchar(2), (sum(matter_time) % 3600) / 60), 2)+ ':' + RIGHT('0' + CONVERT(varchar(2), sum(matter_time) % 60), 2) as 'Total_Tran_Time',
CONVERT(varchar(6), avg(matter_time)/3600)+ ':' + RIGHT('0' + CONVERT(varchar(2), (avg(matter_time) % 3600) / 60), 2)+ ':' + RIGHT('0' + CONVERT(varchar(2), avg(matter_time) % 60), 2) as 'Avg_Tran_Time',
round(sum(matter_served)/cast(count(distinct(queueno)) as float),1) as 'Avg_Tran_Per_Cus'
from @tmptblB
group by loginname, regdate
Я вставляю в @ tmptblC.
select * from @tmptblC
Я могу получить результаты от @ tmptblC.
Но ..
Когда я делаю это,
select logincode from login, @tmptblC where @tmptblC.rowIndex=1 and login.contents=@tmptblC.officer
Я получил эту ошибку.
Msg 137, Level 15, State 2, Line 109
Must declare the scalar variable "@tmptblC".
Так что я начинаю сомневаться, поскольку login
таблица - это фактическая таблица, а @tmptblC
- это та, которую я создал только для этого запроса.
Разве они не могут использоваться вместе?
Если это так, то какое решение.
ТКЗ.
Я узнал, что если я сделаю
select logincode from login, @tmptblC
все в порядке .. что означает ..
@tmptblC.rowIndex=1 and login.contents=@tmptblC.officer
это проблема.