By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
438,856 Members | 2,164 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 438,856 IT Pros & Developers. It's quick & easy.

Help with query plez

P: n/a
Hello all,

I'm trying to write a stored procedure that will prompt the user for a
date range and produce a report based on that date range and 4 incident
types. I only need count how may times these incidents happen within
the data range. The query looks like this

SELECT incident, @Enter_Beginning_Date AS [Beginning Date],
@Enter_Ending_Date AS [Ending Date], COUNT(*) AS Occurances
FROM dbo.Incident
WHERE (DateOccured BETWEEN @Enter_Beginning_Date AND
@Enter_Ending_Date) AND (incident = 'Customer Accident')
GROUP BY incident

This works fine, but I need to get incident = customer accident,
Customer Illness, Employee Accident and Employee Illness in my incident
table. When ever I try to add Incident = Customer Illness to this
query, I get no results. Any assistance will be greatly appreciated.

Jul 23 '05 #1
Share this Question
Share on Google+
5 Replies


P: n/a
First of all, how are you prompting the user for values thru Stored
procedures????????

Your question is pretty hard to answer as you havent provided any info
about your table or Data...!

Do you have records that qualifies Incident = 'Customer Illness'...!

It would help people to help you if you post some DDL/DML codes to
understand where the problem is....

Jul 23 '05 #2

P: n/a
sorry about the vagness,

The table I'm trying to query looks something like this

ID(int) Incident(nvarchar) DateOccured (datetime)
1200 Customer Illness 1/1/2003
1201 Customer Illness 1/2/2003
1202 Customer Accident 1/2/2003
1203 Customer Accident 1/3/2003
1204 Employee Accident 1/5/2003
1205 Employee Illness 1/6/2003

The stored procedure prompts the user for a beginning
(@Enter_Beginning_Date) and ending date(@Enter_Ending_Date) which uses
the DateOccured column for the specified date range. I want the query
to count the number of occurences that happen within the specified date
range. I want to create a report that looks loke this

Incident Number of Occurences
Customer Illness 2
Customer Accident 2
Employee Accident 1
Employee Illness 1

When ever I query for one incident (Customer Accident), the query will
work fine, but when I insert another statement [(incident = Customer
Illness) AND (incident = Customer Accident)] I get no results, when I
know there are at least 3 incidents of Customer Illness. Does this help?

Jul 23 '05 #3

P: n/a
Based on the data you gave..

declare @Enter_Ending_Date datetime
declare @Enter_Beginning_Date datetime

set @Enter_Ending_Date='1/2/2003'
set @Enter_Beginning_Date='1/2/2003'

SELECT incident,
@Enter_Beginning_Date AS [Beginning Date],
@Enter_Ending_Date AS [Ending Date],
COUNT(*) AS Occurances
FROM Incident
WHERE (DateOccured BETWEEN @Enter_Beginning_Date AND
@Enter_Ending_Date) AND
(incident = 'Customer Illness') or (incident = 'Customer Accident')
--(incident = 'Customer Accident')
GROUP BY incident

/*******************************
RESULTSET

Customer Accident 2003-01-02 00:00:00.000 2003-01-02 00:00:00.000 2
Customer Illness 2003-01-02 00:00:00.000 2003-01-02 00:00:00.000 1

Jul 23 '05 #4

P: n/a
On 26 Jan 2005 12:09:50 -0800, ndn_24_7 wrote:

(snip)
The stored procedure prompts the user for a beginning
(@Enter_Beginning_Date) and ending date(@Enter_Ending_Date) which uses
the DateOccured column for the specified date range.
Hi ndn_27_7,

I presume you meant to write that the front-end app prompts the user for
these dates and passes them to SQL Server when calling the stored
procedure, as there is no way that a stored procedure will ever prompt for
input.

When ever I query for one incident (Customer Accident), the query will
work fine, but when I insert another statement [(incident = Customer
Illness) AND (incident = Customer Accident)] I get no results, when I
know there are at least 3 incidents of Customer Illness. Does this help?


The WHERE clause is checked against each row individually. No single row
will ever have both 'Customer Illness' and 'Customer Accident' in the same
column (incident).

SELECT incident, @Enter_Beginning_Date AS [Beginning Date],
@Enter_Ending_Date AS [Ending Date], COUNT(*) AS Occurances
FROM dbo.Incident
WHERE DateOccured BETWEEN @Enter_Beginning_Date
AND @Enter_Ending_Date
AND ( incident = 'Customer Accident'
OR incident = 'Customer Illness')
GROUP BY incident

or

SELECT incident, @Enter_Beginning_Date AS [Beginning Date],
@Enter_Ending_Date AS [Ending Date], COUNT(*) AS Occurances
FROM dbo.Incident
WHERE DateOccured BETWEEN @Enter_Beginning_Date
AND @Enter_Ending_Date
AND incident IN ('Customer Accident', 'Customer Illness')
GROUP BY incident

(Note that IN is just a short form for writing a bunch of OR's)

Best, Hugo
--

(Remove _NO_ and _SPAM_ to get my e-mail address)
Jul 23 '05 #5

P: n/a
It worked very good, THank you for all your assistance

Jul 23 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.