Unix Technical Forum

SQL Select All Items where one meets the criteria

This is a discussion on SQL Select All Items where one meets the criteria within the SQL Server forums, part of the Microsoft SQL Server category; --> I've got a SQL statement that has me stumped. Consider the following scenario: A donor gives the following gifts: ...


Go Back   Unix Technical Forum > Database Server Software > Microsoft SQL Server > SQL Server

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 05-10-2008, 03:12 PM
ckauvar@gmail.com
 
Posts: n/a
Default SQL Select All Items where one meets the criteria

I've got a SQL statement that has me stumped. Consider the following
scenario:

A donor gives the following gifts:
in 2006 they give $250
in 2007 they give $550
in 2008 they give $50

My report needs to select this individual because any one of their
gifts exceeded $500 and then it needs to print all of their gifts in
every year since 2006. Even though the other 2 gifts don't meet the
over $500 criteria, they need to appear on the report since the
individual has one gift that exceeds $500.

I've got the following so far:
select people.people_code_id, givingsummary.giving_amount,
givingsummary.fiscal_year from
people, givingsummary
where people.people_code_id = givingsummary.people_org_code_id and
givingsummary.giving_amount in (select giving_amount from
givingsummary where giving_amount>=500 and
fiscal_year<>'')

My problem is that the query is excluding gifts less than $500, so
they aren't printing on my report for people who have given one gift
that was over $500. How do I tell SQL to print all gifts within a
specific timeframe if one of the gifts exceeds $500?

Thanks in advance!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 05-10-2008, 03:12 PM
Plamen Ratchev
 
Posts: n/a
Default Re: SQL Select All Items where one meets the criteria

Here is one way:

SELECT P.people_code_id, G.giving_amount, G.fiscal_year
FROM People AS P
JOIN GivingSummary AS G
ON P.people_code_id = G.people_org_code_id
WHERE EXISTS (SELECT *
FROM GivingSummary AS G2
WHERE G2.people_org_code_id = G.people_org_code_id
AND G2.giving_amount >= 500
AND G2.fiscal_year <> '');


HTH,

Plamen Ratchev
http://www.SQLStudio.com
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 05-10-2008, 03:12 PM
ckauvar@gmail.com
 
Posts: n/a
Default Re: SQL Select All Items where one meets the criteria

On May 8, 1:20*pm, "Plamen Ratchev" <Pla...@SQLStudio.com> wrote:
> Here is one way:
>
> SELECT P.people_code_id, G.giving_amount, G.fiscal_year
> FROM People AS P
> JOIN GivingSummary AS G
> * ON P.people_code_id = G.people_org_code_id
> WHERE EXISTS (SELECT *
> * * * * * * * * * * *FROM GivingSummary AS G2
> * * * * * * * * * * *WHERE G2.people_org_code_id =G.people_org_code_id
> * * * * * * * * * * * * *AND G2.giving_amount >= 500
> * * * * * * * * * * * * *AND G2.fiscal_year <> '');
>
> HTH,
>
> Plamen Ratchevhttp://www.SQLStudio.com


Hi,

Thanks for the response. That is perfect. This leads to one more
question. Now that I am selecting the right group of people and
gifts, I need the select statement to adjust based on the number of
years the users want to report on. I've created a prompt where the
user enters a starting fiscal year. I then need to pull individuals
who have given a gift of $500 or more in any year starting with the
fiscal year the user entered. So, somehow I need to tell the query to
look to the user entered fiscal year and then run the exists statement
for years greater than or equal to that year.

For example, in the example I gave above the donor gives the following
gifts:
in 2006 they give $250
in 2007 they give $550
in 2008 they give $50

If at the prompt the user enters 2006, then all 3 gifts above would
appear. If at the prompt the user enters 2008, then the person would
not appear on the list because they do not have a gift above $500 in
the time period requested.

I tried adding in something along the lines of below, but it doesn't
seem to be working. Any suggestions?

WHERE EXISTS (SELECT *
FROM GivingSummary AS G2
WHERE G2.people_org_code_id =
GIVINGSUMMARY.people_org_code_id
AND G2.giving_amount >= 500
AND G2.fiscal_year <> ''
AND G2.FISCAL_YEAR >= @FiscalYear)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #4 (permalink)  
Old 05-10-2008, 03:12 PM
Plamen Ratchev
 
Posts: n/a
Default Re: SQL Select All Items where one meets the criteria

Add one more condition to the main WHERE clause to return only the correct
years:

WHERE G.fiscal_year >= @FiscalYear
AND EXISTS(...

HTH,

Plamen Ratchev
http://www.SQLStudio.com

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 05:04 PM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
www.UnixAdminTalk.com