試試這個
ALTER procedure [dbo].[Weekend]
@carid varchar(50)
as
begin
Declare
@wday datetime,
@yr varchar(50),
@vtid integer,
@locid integer,
@day varchar(10),
@year integer
-- taking parameter value
select @wday = t.dtime
from Transaction_tbl t where [email protected]
set @day=datename(Weekday,@wday)
set @year=year(@wday)
set @vtid = (select t.vtid
from Transaction_tbl t where [email protected]);
set @locid = (select t.locid
from Transaction_tbl t where [email protected]);
set nocount on
DECLARE @todaysdate date
Declare @checkWeekend integer
select @todaysdate = CONVERT(varchar(10), GETDATE(), 111)
--End
--check current day is holiday(Weeknd)
select @checkWeekend= Weekend from weekends_tbl where [email protected]
if @checkWeekend= 1
begin
Select t.dtime,
k.HBarcode, m.make,t.Compl,
t.plateno,t.self,t.dtime, v.vtype, l.locname,case when l.edt is null or l.edt =0 then l.minEdt
+l.BuffrEDT else l.edt + l.BuffrEDT end as EDT, t.locid,t.vtid,t.lsttic,
c.Colname, te.UniqueName,DATEDIFF(minute,t.dtime,getdate()) as
Duration,pl.PS,pc.PlateCode,t.Paid,t.Status,t.DelDate,t.vtid,t.Locid, Hamount as amount
from Transaction_tbl t
left JOIN KHanger_tbl k ON t.transactID = k.transactID
left JOIN make_tbl m ON t.mkid = m.mkid
left join PlateSource_tbl pl on t.PSID=pl.PSID
left join PlateCode_tbl pc on t.PCdID=pc.PCdID
left JOIN vtype_tbl v ON v.vtid = t.vtid
left JOIN Location_tbl l ON t.locid = l.locid
left JOIN Color_tbl C ON t.colid = c.colid
left JOIN Terminals_tbl te ON k.tid = te.tid
left join locvtypeassign_tbl loc on t.Locid=loc.locid
where [email protected] and [email protected] and loc.active=0 and [email protected]
end
else
--Check current day belongs to any public holiday
begin
if @todaysdate in(select Hdate from Pholidays_tbl where [email protected])
begin
Select t.dtime,
k.HBarcode, m.make,t.Compl,
t.plateno,t.self,t.dtime, v.vtype, l.locname,case when l.edt is null or l.edt =0 then l.minEdt
+l.BuffrEDT else l.edt + l.BuffrEDT end as EDT, t.locid,t.vtid,t.lsttic,
c.Colname, te.UniqueName,DATEDIFF(minute,t.dtime,getdate()) as
Duration,pl.PS,pc.PlateCode,t.Paid,t.Status,t.DelDate,t.vtid,t.Locid, Hamount as amount
from Transaction_tbl t
left JOIN KHanger_tbl k ON t.transactID = k.transactID
left JOIN make_tbl m ON t.mkid = m.mkid
left join PlateSource_tbl pl on t.PSID=pl.PSID
left join PlateCode_tbl pc on t.PCdID=pc.PCdID
left JOIN vtype_tbl v ON v.vtid = t.vtid
left JOIN Location_tbl l ON t.locid = l.locid
left JOIN Color_tbl C ON t.colid = c.colid
left JOIN Terminals_tbl te ON k.tid = te.tid
left join locvtypeassign_tbl loc on t.Locid=loc.locid
where [email protected] and [email protected] and loc.active=0 and [email protected]
end
-- so calculating normal day amount
else
begin
Select t.dtime,
k.HBarcode, m.make,t.Compl,
t.plateno,t.self,t.dtime, v.vtype, l.locname,case when l.edt is null or l.edt =0 then l.minEdt
+l.BuffrEDT else l.edt + l.BuffrEDT end as EDT, t.locid,t.vtid,t.lsttic,
c.Colname, te.UniqueName,DATEDIFF(minute,t.dtime,getdate()) as
Duration,pl.PS,pc.PlateCode,t.Paid,t.Status,t.DelDate,t.vtid,t.Locid, Namount as amount
from Transaction_tbl t
left JOIN KHanger_tbl k ON t.transactID = k.transactID
left JOIN make_tbl m ON t.mkid = m.mkid
left join PlateSource_tbl pl on t.PSID=pl.PSID
left join PlateCode_tbl pc on t.PCdID=pc.PCdID
left JOIN vtype_tbl v ON v.vtid = t.vtid
left JOIN Location_tbl l ON t.locid = l.locid
left JOIN Color_tbl C ON t.colid = c.colid
left JOIN Terminals_tbl te ON k.tid = te.tid
left join locvtypeassign_tbl loc on t.Locid=loc.locid
where [email protected] and [email protected] and loc.active=0 and [email protected]
end
end
--fetching amount nd details part over---
--Checking corresponding barcde complimentry or not.if compl taking deltails
if(select COUNT(t1.Compl) from dbo.Transaction_tbl t1 where [email protected])=1
begin
declare @compl integer =null,
@transid integer=null,
@complid integer=null
select @transid=t.transactID from dbo.Transaction_tbl t where [email protected]
Select @compl=co.Cmplid from dbo.ComplimentTransactAssign_tbl co where [email protected]
select c.CompName,c1.Remarks from Complimentary_tbl c
inner join ComplimentTransactAssign_tbl c1 on c.CmplID=c1.Cmplid where [email protected] and
[email protected]
end
--End Compl Checking---
declare @locatnid integer,
@location nvarchar(100)
begin
select @locatnid= t.Locid from dbo.Transaction_tbl t where [email protected]
select l1.StartTime,l1.EndTime from dbo.Location_tbl l1 where [email protected]
end
end
出現錯誤:當子查詢未與EXISTS一起引入時,只能在選擇列表中指定一個表達式。 – user3252014 2014-09-30 07:32:38
再試一次,因爲我編輯了它 – 2014-09-30 07:33:27
先生我編輯了我的問題。我期待這樣的 – user3252014 2014-09-30 07:37:29