Solved

if statement in select query

Posted on 2009-03-30
7
597 Views
Last Modified: 2012-05-06
Hi,

Is it possible to include an IF statement into a select query??

I am trying to include "IF (CONVERT(VARCHAR(10),GETDATE(),108) > '09:00:00')" into a select query but am receving several errors when I do.

Thanks
SELECT  INCI.INCIDENT_CODE,

		INCI.INCIDENT_TITLE,

		INCI.INCIDENT_MESSAGE,

		U.USER_NAME  AS OWNER,

		C.FIRST_NAME + ' ' + C.LAST_NAME AS CONTACT_REQUESTER,

		L1.LIST_VALUE AS INCIDENT_STATUS,

		L2.LIST_VALUE AS INCIDEND_PRIORITY,

		INCI.CREATE_DATETIME,
 

--IF (CONVERT(VARCHAR(10),GETDATE(),108) > '09:00:00')

	

		

		--CASE STATEMENT TO IDENTIFY SLA FIX DATETIME COLOUR

		CASE 	

		WHEN DATEDIFF(MI, CONVERT(DATETIME, GETDATE(), 103), CONVERT(DATETIME, INCIS.FIELD_VALUE, 103) ) > (SLA.SLA_TIME / 2) THEN (SELECT LIST_VALUE FROM TBL_LIST WHERE LIST_CODE = 'LIST00000000361')

		WHEN DATEDIFF(MI, CONVERT(DATETIME, GETDATE(), 103), CONVERT(DATETIME, INCIS.FIELD_VALUE, 103) ) <= (SLA.SLA_TIME / 2) AND DATEDIFF(MI, CONVERT(DATETIME, GETDATE(), 103), CONVERT(DATETIME, INCIS.FIELD_VALUE, 103) ) > (SLA.SLA_TIME / 3) THEN (SELECT LIST_VALUE FROM TBL_LIST WHERE LIST_CODE = 'LIST00000000362')

		WHEN DATEDIFF(MI, CONVERT(DATETIME, GETDATE(), 103), CONVERT(DATETIME, INCIS.FIELD_VALUE, 103) ) <= (SLA.SLA_TIME / 3) THEN (SELECT LIST_VALUE FROM TBL_LIST WHERE LIST_CODE = 'LIST00000000360')

		WHEN DATEDIFF(MI, CONVERT(DATETIME, GETDATE(), 103), CONVERT(DATETIME, INCIS.FIELD_VALUE, 103) ) < 0 THEN (SELECT LIST_VALUE FROM TBL_LIST WHERE LIST_CODE = 'LIST00000000359')

		ELSE (SELECT LIST_VALUE FROM TBL_LIST WHERE LIST_CODE = 'LIST00000000358')

		END AS [SLA Fix KPI],
 

		--CASE STATEMENT TO IDENTIFY SLA RESP DATETIME COLOUR

		CASE 	

		WHEN DATEDIFF(MI, CONVERT(DATETIME, GETDATE(), 103), CONVERT(DATETIME, INCIS3.FIELD_VALUE, 103) ) > (SLA2.SLA_TIME / 2) THEN (SELECT LIST_VALUE FROM TBL_LIST WHERE LIST_CODE = 'LIST00000000361')

		WHEN DATEDIFF(MI, CONVERT(DATETIME, GETDATE(), 103), CONVERT(DATETIME, INCIS3.FIELD_VALUE, 103) ) <= (SLA2.SLA_TIME / 2) AND DATEDIFF(MI, CONVERT(DATETIME, GETDATE(), 103), CONVERT(DATETIME, INCIS.FIELD_VALUE, 103) ) > (SLA.SLA_TIME / 3) THEN (SELECT LIST_VALUE FROM TBL_LIST WHERE LIST_CODE= 'LIST00000000362')

		WHEN DATEDIFF(MI, CONVERT(DATETIME, GETDATE(), 103), CONVERT(DATETIME, INCIS3.FIELD_VALUE, 103) ) <= (SLA2.SLA_TIME / 3) THEN (SELECT LIST_VALUE FROM TBL_LIST WHERE LIST_CODE = '~/Images/redSLA.jpg')

		WHEN DATEDIFF(MI, CONVERT(DATETIME, GETDATE(), 103), CONVERT(DATETIME, INCIS3.FIELD_VALUE, 103) ) < 0 THEN (SELECT LIST_VALUE FROM TBL_LIST WHERE LIST_CODE = 'LIST00000000359')

		ELSE (SELECT LIST_VALUE FROM TBL_LIST WHERE LIST_CODE = 'LIST00000000358')

		END AS [SLA Resp KPI]
 
 

FROM TBL_INCIDENT INCI

LEFT JOIN TBL_USER U ON U.USER_CODE = INCI.OWNER_CODE

LEFT JOIN TBL_CONTACT C ON C.CONTACT_CODE = INCI.CONTACT_REQUESTER

LEFT JOIN TBL_LIST L1 ON L1.LIST_CODE = INCI.INCIDENT_STATUS

LEFT JOIN TBL_LIST L2 ON L2.LIST_CODE = INCI.INCIDENT_PRIORITY
 

--NEW CODE TO ACCOMODATE THE SLA IMAGE--

LEFT JOIN TBL_INCIDENT_IS INCIS ON INCI.INCIDENT_CODE = INCIS.INCIDENT_CODE AND INCIS.OBJECT_PROPERTY_CODE = 'OBJP00000000020' --SLA End DateTime

LEFT JOIN TBL_INCIDENT_IS INCIS2 ON INCI.INCIDENT_CODE = INCIS2.INCIDENT_CODE AND INCIS2.OBJECT_PROPERTY_CODE = 'OBJP00000000016' --SLA FIX CAT

LEFT JOIN TBL_INCIDENT_IS INCIS3 ON INCI.INCIDENT_CODE = INCIS3.INCIDENT_CODE AND INCIS3.OBJECT_PROPERTY_CODE = 'OBJP00000000034' --SLA RESP End DateTime

LEFT JOIN TBL_INCIDENT_IS INCIS4 ON INCI.INCIDENT_CODE = INCIS4.INCIDENT_CODE AND INCIS4.OBJECT_PROPERTY_CODE = 'OBJP00000000035' --SLA RESP CAT
 

LEFT JOIN TBL_SLA SLA ON SLA.SLA_CODE = INCIS2.FIELD_VALUE  --SLA FIX CAT MINS

LEFT JOIN TBL_SLA SLA2 ON SLA2.SLA_CODE = INCIS4.FIELD_VALUE  --SLA resp CAT MINS

--END OF NEW CODE--
 

WHERE INCI.TEAM_CODE = 'TEAM00000000010'

Open in new window

0
Comment
Question by:dwhitfield_CPWN
7 Comments
 
LVL 37

Expert Comment

by:momi_sabag
ID: 24016855
what do you mean if?
what are you trying to achieve?
it is not possible to determine using an if the number of columns that will be selected, since each row must have the exact same columns

you can use a case statement in order to decide if you wish to return a value or just a null for a certain column
0
 
LVL 7

Accepted Solution

by:
luani earned 500 total points
ID: 24016870
you cannot place the IF inside the query but you can do :
DECLARE @VAR VARCHAR(10)

SET @Var=CONVERT(VARCHAR(10),GETDATE(),108)

IF @Var>''09:00:00'
SELECT ..........
ELSE
SELECT .........


0
 
LVL 13

Expert Comment

by:St3veMax
ID: 24016871
WHat are you trying to achieve ?

Looking at your example it would be something for monitoring SLA's; I do something similar with our Support Centre; but I use in the where clause:

DATEPART(HH, YourField) BETWEEN '8' AND '18'
0
[Webinar] Disaster Recovery and Cloud Management

Learn from Unigma and CloudBerry industry veterans which providers are best for certain use cases and how to lower cloud costs, how to grow your Managed Services practice in IaaS clouds, and how to utilize public cloud for Disaster Recovery

 

Author Comment

by:dwhitfield_CPWN
ID: 24016873
Ok, basically I only want to use the two case statements if the current time is greater than 09:00:00.

If is before 09:00:00 then I dont want the two case statements to run

Hope this helps
0
 
LVL 13

Expert Comment

by:St3veMax
ID: 24016905
The example above will help as you're saying your criteria is between set hours.

HTH
0
 

Author Comment

by:dwhitfield_CPWN
ID: 24016948
I still want the query to run even if its past say 17:00:00.

So ive used the variable technique and done and if staement around that.

Thanks for all your help.
0
 
LVL 8

Expert Comment

by:vinurajr
ID: 24017178
This IF too u can avoid... by bringing the condition in where clause
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Help with SQL joins 9 43
Divide by zero error encountered. 2 35
Upgrading SQL 2005 Express to 2008 R2 Express 31 68
Replace Dates in query 14 20
Problem Statement In an SAP BI BO Integration project when a BO universe is built on a BEx query, there can be an issue of unit & formatted value objects not getting generated in a BO universe for some key figures. This results in an issue whereb…
Today, still in the boom of Apple, PC's and products, nearly 50% of the computer users use Windows as graphical operating systems. If you are among those users who love windows, but are grappling to keep the system's hard drive optimized, then you s…
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…
As a trusted technology advisor to your customers you are likely getting the daily question of, ‘should I put this in the cloud?’ As customer demands for cloud services increases, companies will see a shift from traditional buying patterns to new…

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now