Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7748807
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 1, 20262026-06-01T10:52:42+00:00 2026-06-01T10:52:42+00:00

I have a dynamic search query with join multiple tables, for showing sum and

  • 0

I have a dynamic search query with join multiple tables, for showing sum and count of some columns. But sum function returns the wrong value. It cause to joins. But I don’t know what should I do, just I know if remove join with delivery table result will be true. But my delivery table is need for parameter of search.

Here are some lines of code:

SELECT     
    COUNT(DISTINCT Cargo.ID) AS 'TotalCargo',
    SUM(CargoService.Weight) AS 'TotalWeight',
    SUM(CargoService.PackageNo) AS 'TotalPack',
    COUNT(DISTINCT CargoService.FlightNo) AS 'TotalFlight',
    COUNT(DISTINCT Cargo.Origin) AS 'TotalOrigin'
FROM         
    Cargo 
INNER JOIN
    CargoService ON Cargo.ID = CargoService.CargoID 
INNER JOIN
    Contents ON Cargo.Contents = Contents.ID 
FULL JOIN
    Delivery ON Cargo.ID = Delivery.CargoID 
FULL JOIN
    Transit ON Cargo.ID = Transit.CargoID
WHERE       
    Cargo.InputDate BETWEEN CAST(CONVERT(char(10), '2012/04/03', 126) AS datetime) 
                        AND CAST(CONVERT(char(10), '2012/04/03', 126) AS datetime)
    AND CargoService.FlightNo = 1356

and the total search query is below:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER procedure [dbo].[Cargo_SearchTotal]
    @EntryFrom nvarchar(20),
    @EntryTo nvarchar(20),
    @DeliveredFrom nvarchar(20),
    @DeliveredTo nvarchar(20),
    @Origin nvarchar(10),
    @Transit nvarchar(10),
    @CargoCode char(16),
    @Name nvarchar(150),
    @Family nvarchar(150),
    @RealName nvarchar(150),
    @RealFamily nvarchar(150),
    @FlightNo nvarchar(10),
    @Daily nvarchar(10),
    @UndeliveredTransit nvarchar(10),
    @Undelivered nvarchar(10),
    @UndeliveredPerishable nvarchar(10),
    @Delivered nvarchar(10),
    @sort nvarchar(10)
as
    declare @query as nvarchar(max);
    declare @params as nvarchar(max);

    set @query = 'SELECT Count(DISTINCT Cargo.ID) AS ''TotalCargo'',
           sum(CargoService.Weight) AS ''TotalWeight'',
           SUM(CargoService.PackageNo) AS ''TotalPack'',
           COUNT(DISTINCT CargoService.FlightNo) AS ''TotalFlight'',
           COUNT(DISTINCT Cargo.Origin) AS ''TotalOrigin''
FROM        
                  Contents INNER JOIN
                  Cargo ON Contents.ID = Cargo.Contents FULL Join
                  Delivery ON Cargo.ID = Delivery.CargoID full JOIN
                  Transit ON Cargo.ID = Transit.CargoID JOIN
                  CargoService ON Cargo.ID = CargoService.CargoID '
---------------------------------------------  
if(@EntryFrom='select') set @EntryFrom='';
if(@EntryTo='select') set @EntryTo='';
if(@DeliveredFrom='select') set @DeliveredFrom='';
if(@DeliveredTo='select') set @DeliveredTo='';
if(@Origin='select') set @Origin='';
if(@Transit='select') set @Transit='';
if(@CargoCode='select') set @CargoCode='';
if(@Name='select') set @Name='';
if(@Family='select') set @Family='';
if(@RealName='select') set @RealName='';
if(@RealFamily='select') set @RealFamily='';
if(@FlightNo='select') set @FlightNo='';
if(@Daily <> 'True') set @Daily='';
if(@UndeliveredTransit <> 'True') set @UndeliveredTransit='';
if(@Undelivered <> 'True') set @Undelivered='';
if(@UndeliveredPerishable <> 'True') set @UndeliveredPerishable='';
if(@Delivered <> 'True') set @Delivered='';
if(@sort <> 'True') set @sort='';
---------------------------------------------  
if(@EntryFrom<>'' or @EntryTo<>'' or @DeliveredFrom<>'' or @DeliveredTo<>'' or @Origin<>'' 
    or @Transit<>'' or @CargoCode<>'' or @Name<>''
    or @Family<>'' or @RealName<>'' or @RealFamily<>'' or @FlightNo<>'' or @Daily <>''
    or @UndeliveredTransit <>'' or @Undelivered <>'' or @UndeliveredPerishable<>'' or @Delivered<>'')
begin
  set @query=@query+' where ';
end
---------------------------------------------  
if(@EntryFrom<>'' and @EntryTo<>'' and (@EntryFrom=@EntryTo))
begin 
 set @query=@query+' Cargo.InputDate=cast(CONVERT(char(10), '''+@EntryFrom+''',126) as datetime) and ';
end
else if(@EntryFrom<>'' and @EntryTo<>'')
begin
  set @query=@query+' Cargo.InputDate between cast(CONVERT(char(10), '''+@EntryFrom+''',126) as datetime) and cast(CONVERT(char(10), '''+@EntryTo+''',126) as datetime) and ';
end     
else if(@EntryFrom<>'' and @EntryTo='')
begin
 set @query=@query+' Cargo.InputDate  >=cast(CONVERT(char(10), '''+@EntryFrom+''',126) as datetime) and ';
end
else if(@EntryFrom='' and @EntryTo<>'')
begin
 set @query=@query+' Cargo.InputDate <=cast(CONVERT(char(10), '''+@EntryTo+''',126) as datetime) and ';
end
---------------------------------------------  
if(@DeliveredFrom<>'' and @DeliveredTo<>'' and (@DeliveredFrom=@DeliveredTo))
begin 
 set @query=@query+' Delivery.DeliveryDate=cast(CONVERT(char(10), '''+@DeliveredFrom+''',126) as datetime) and ';
end
else if(@DeliveredFrom<>'' and @DeliveredTo<>'')
begin
  set @query=@query+' Delivery.DeliveryDate between cast(CONVERT(char(10), '''+@DeliveredFrom+''',126) as datetime) and cast(CONVERT(char(10), '''+@DeliveredTo+''',126) as datetime) and ';
end     
else if(@DeliveredFrom<>'' and @DeliveredTo='')
begin
 set @query=@query+' Delivery.DeliveryDate >= cast(CONVERT(char(10), '''+@DeliveredFrom+''',126) as datetime) and ';
end
else if(@DeliveredFrom='' and @DeliveredTo<>'')
begin
 set @query=@query+' Delivery.DeliveryDate <= cast(CONVERT(char(10), '''+@DeliveredTo+''',126) as datetime) and ';
end
---------------------------------------------  
if(@Origin<>'')
begin
 set @query=@query+' Cargo.Origin = cast('''+@Origin+''' as int) and ';
end
---------------------------------------------  
if(@Transit<>'')
begin
 set @query=@query+' Transit.TransitTo = cast('''+@Transit+''' as int) and ';
end
---------------------------------------------  
if(@CargoCode<>'')
begin
  set @query=@query+' CargoNumber=cast('''+@CargoCode+''' as char(16)) and ';
end
---------------------------------------------  
if(@FlightNo<>'')
begin
  set @query=@query+' CargoService.FlightNo=cast('''+@FlightNo+''' as nvarchar(255)) and ';
end
---------------------------------------------  
if(@Name<>'')
begin
 set @query=@query+' Cargo.Rname like N'''+@Name+''' and ';
end
---------------------------------------------  
if(@Family<>'')
begin
 set @query=@query+' Cargo.RFamily like N'''+@Family+''' and ';
end
---------------------------------------------  
if(@RealName<>'')
begin
 set @query=@query+' Delivery.RName like N'''+@RealName+''' and ';
end
---------------------------------------------  
if(@RealFamily<>'')
begin
 set @query=@query+' Delivery.RFamily like N'''+@RealFamily+''' and ';
end
---------------------------------------------  
if(@Daily<>'')
 begin
    set @query=@query+' convert(varchar, Cargo.SaveDate, 111) = convert(varchar, getdate(), 111) and ';
end
---------------------------------------------  
if(@UndeliveredTransit<>'')
begin
    set @query=@query+' Cargo.Delivered = 0 and Cargo.Transit = 1 and ';
end
---------------------------------------------  
if(@Undelivered<>'')
begin
    set @query=@query+' Cargo.Delivered = 0 and ';
end
---------------------------------------------  
if(@UndeliveredPerishable<>'')
begin
    set @query=@query+' Contents.Perishable = 1 AND Cargo.Delivered = 0  and ';
end
---------------------------------------------  
if(@Delivered <> '')
begin
    set @query=@query+' Cargo.Delivered = 1 and ';
end
--------------------------------------------- 
if(@EntryFrom<>'' or @EntryTo<>'' or @DeliveredFrom<>'' or @DeliveredTo<>'' or @Origin<>'' 
    or @Transit<>'' or @CargoCode<>'' or @Name<>''
    or @Family<>'' or @RealName<>'' or @RealFamily<>'' or @FlightNo<>'' or @Daily <>'' 
    or @UndeliveredTransit <>'' or @Undelivered <>'' or @UndeliveredPerishable <>'' or @Delivered <>'')
begin
 set @query=substring(@query,0,len(@query)-3);
end 
---------------------------------------------  
set @params =  '@EntryFrom nvarchar(20),
                @EntryTo nvarchar(20),
                @DeliveredFrom nvarchar(20),
                @DeliveredTo nvarchar(20),
                @Origin nvarchar(10),
                @Transit nvarchar(10),
                @CargoCode char(16),
                @Name nvarchar(150),
                @Family nvarchar(150),
                @RealName nvarchar(150),
                @RealFamily nvarchar(150),
                @FlightNo nvarchar(10),
                @Daily nvarchar(10),
                @UndeliveredTransit nvarchar(10),
                @Undelivered nvarchar(10),
                @UndeliveredPerishable nvarchar(10),
                @Delivered  nvarchar(10),
                @sort   nvarchar(10)';
---------------------------------------------  
exec sp_executesql @query,@params,@EntryFrom,@EntryTo,@DeliveredFrom,@DeliveredTo,@Origin, 
                   @Transit,@CargoCode,@Name,
                   @Family,@RealName,@RealFamily,@FlightNo,@Daily, 
                   @UndeliveredTransit,@Undelivered,@UndeliveredPerishable,@Delivered,@sort;
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-01T10:52:43+00:00Added an answer on June 1, 2026 at 10:52 am

    You might remove join and use exists:

    declare @deliveryQuery as varchar(max)
    declare @deliveryLen int
    set @deliveryQuery = 'and exists (select null 
                                        from Delivery 
                                       where Cargo.ID = Delivery.CargoID'
    -- It will change if we add conditions to @deliveryQuery
    set @deliveryLen = len(@deliveryQuery)
    -- ...
    if(@RealName<>'')
    begin
     set @deliveryQuery = @deliveryQuery 
                          + ' and Delivery.RName like N'''+@RealName+'''';
    end
    -- Aditional conditions here following the pattern above
    
    --And later, test if @deliveryQuery has changed
    if len(@deliveryQuery) <> @deliveryLen
    begin
       set @query = @query + @deliveryQuery + ')'
    end
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have some divs that have dynamic heights controlled by a 'click' function as
I have some divs that have dynamic heights controlled by a 'click' function as
I have a dynamic query that returns around 590,000 records. It runs successfully the
I currently have a query that returns results based on a dynamic set of
Recently search engines have been able to page dynamic content on social networking sites.
I am looking at the facebook search api, but I have difficulties with the
Stack Overflowers: I have a search function on my company's website (based on .NET
.NET 3.5, C# I have a web app with a search feature. Some of
What is a good way to handle dynamic sql parameters? I have a search
I have some code which utilizes parameterized queries to prevent against injection, but I

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.