I have created a dynamic where
clause based on an option selected in SQL Server but when I add this dynamic where
string at end of my SQL query, I am getting this error message:
Failed when converting the varchar value 'Where..... to data type integer
This is my query:
lter PROCEDURE [dbo].[GetDailyLogSearchReportLegalNew] @FilterBy varchar(100),@BranchFilter varchar(100), @Status varchar(100), @dtFrom date, @dtTo date
AS
-- exec GetDailyLogSearchReportLegalnew @FilterBy = 'BRANCH',@BranchFilter = 'CHICAGO',@Status ='B', @dtFrom = '06-01-2015', @dtTo ='07-24-2015'
declare @Query NVARCHAR(Max)
declare @Where varchar(1000)
declare @Query1 NVARCHAR(Max)
declare @Where1 varchar(1000)
declare @Merge NVARCHAR(Max)
if(@FilterBy = 'BRANCH' and @BranchFilter = 'ALL')
BEGIN
if(@Status = 'B')
BEGIN
set @Where = ' Where
LG_BillTo=0 AND dbo.LegalMain.LG_ReceivedDate >= '+''''+ convert(varchar(25),Convert(date,@dtFrom)) +' '+'00:00:00.000'' AND dbo.LegalMain.LG_ReceivedDate <= '''+ convert(varchar(25),Convert(date,@dtTo)) +' '+'23:59:59.999'''
END
else if(@Status = 'C')
BEGIN
set @Where = 'WHERE
LG_BillTo=0 AND dbo.LegalMain.LG_ActualDateCompleted >= '+''''+ convert(varchar(25),Convert(date,@dtFrom)) +' '+'00:00:00.000'' AND dbo.LegalMain.LG_ActualDateCompleted <= '''+ convert(varchar(25),Convert(date,@dtTo)) +' '+'23:59:59.999'''
END
else if(@Status = 'I')
BEGIN
set @Where = 'WHERE
LG_BillTo=0 AND dbo.LegalMain.LG_ReceivedDate >= '+''''+ convert(varchar(25),Convert(date,@dtFrom)) +' '+'00:00:00.000'' AND dbo.LegalMain.LG_ReceivedDate <= '''+ convert(varchar(25),Convert(date,@dtTo)) +' '+'23:59:59.999'' And dbo.LegalMain.LG_ActualDateCompleted is null'
END
END
SELECT LEFT(LG_CreationTime,5) as 'Status', dbo.LegalMain.LG_LegalID AS ID,
dbo.LegalMain.LG_ReceivedDate AS 'Received Date', Forwarder.CST_ShortName AS 'Customer',
dbo.City.CTY_CityName AS 'City', Shipper.CST_FullName AS 'Shipper',
dbo.LegalMain.LG_ReferenceNo AS 'Ref No', dbo.Country.CNT_CountryName AS 'Country',
dbo.LegalBranch.BR_BranchName AS Branch, ST_ServiceType AS 'Service Type',
dbo.LegalMain.LG_ActualDateCompleted AS NewCompleted,
SN_SentTo as 'Sent To',LG_COPREP as CO, LG_InoviceNo AS 'Invoice No'
FROM dbo.LegalBranch
RIGHT OUTER JOIN dbo.LegalMain ON dbo.LegalBranch.BR_ID = dbo.LegalMain.LG_BranchId
LEFT OUTER JOIN dbo.Country ON dbo.LegalMain.LG_CountryID = dbo.Country.CNT_CountryID
LEFT OUTER JOIN dbo.Customer AS Forwarder
LEFT OUTER JOIN dbo.City ON Forwarder.CST_CityID = dbo.City.CTY_CityID ON dbo.LegalMain.LG_ForwarderID = Forwarder.CST_CustomerID
LEFT OUTER JOIN dbo.LegalServiceType ON dbo.LegalMain.LG_ServiceTypeId = dbo.LegalServiceType.ST_ServiceTypeID
LEFT OUTER JOIN dbo.LegalSentTo ON dbo.LegalMain.LG_SentToId = dbo.LegalSentTo.SN_ID
LEFT OUTER JOIN dbo.Customer AS Shipper ON dbo.LegalMain.LG_ShipperID = Shipper.CST_CustomerID & ' ' & cast(@Where as varchar(1000))
Thanks.