Please start any new threads on our new 
    site at https://forums.sqlteam.com.  We've got lots of great SQL Server
    experts to answer whatever question you can come up with. 
    
        
            
                
                    
                        
                            
                                | Author | 
                                
                                 Topic  | 
                             
                            
                                    | 
                                         Alain_TV 
                                        Starting Member 
                                         
                                        
                                        12 Posts  | 
                                        
                                        
                                            
                                            
                                             Posted - 2015-01-09 : 06:50:19
                                            
  | 
                                             
                                            
                                            Hi All,I have a query that runs on MS Report Builder 3, in which the user has the option to select a day, month, year and certain text from a field to return specific data.This query works fine, however, I wish to be able to add the ability, of not using any date ranges within the same query, given the option to return any data matching the text criteria entered, for any date found.Is there a way to achieve this within the same query?I have tried few options, but it returns null, which is not a valid entry for the query. I have also tried to cast/convert the date field into string, to avoid null, however it then returns a date range that appears to be the default lowest date that MS SQL works with.Any ideas? Query as follow:SELECT (resultA.MonitoredPoint) As AlarmPoint, (resultA.DateTimeStamp) As FromTime, (resultB.DateTimeStamp) As ToTime, DATEDIFF(MINUTE, min(resultA.DateTimeStamp), min(resultB.DateTimeStamp)) As ActiveTimeFROM(SELECT  tbAlarmsEvents.MonitoredPoint  ,tbAlarmsEvents.UniqueAlarmId  ,tbAlarmsEvents.AlarmState  ,tbAlarmsEvents.MonitoredValue  ,tbAlarmsEvents.[Count]  ,tbAlarmsEvents.AlarmText  ,tbAlarmsEvents.DateTimeStamp   FROM  tbAlarmsEventsWHERE AlarmText Like '%' + (@AlarmText) + '%'AND tbAlarmsEvents.MonitoredValue = '1'AND DATEPART(day, tbAlarmsEvents.DateTimeStamp)=@Sel_DayAND DATEPART(month, tbAlarmsEvents.DateTimeStamp)=@Sel_MonthAND DATEPART(year, tbAlarmsEvents.DateTimeStamp)=@Sel_Year) As resultA,(SELECT  tbAlarmsEvents.MonitoredPoint  ,tbAlarmsEvents.UniqueAlarmId  ,tbAlarmsEvents.AlarmState  ,tbAlarmsEvents.MonitoredValue  ,tbAlarmsEvents.[Count]  ,tbAlarmsEvents.AlarmText  ,tbAlarmsEvents.DateTimeStamp    FROM  tbAlarmsEventsWHERE AlarmText Like '%' + (@AlarmText) + '%'AND tbAlarmsEvents.MonitoredValue = '0'AND DATEPART(day, tbAlarmsEvents.DateTimeStamp)=@Sel_DayAND DATEPART(month, tbAlarmsEvents.DateTimeStamp)=@Sel_MonthAND DATEPART(year, tbAlarmsEvents.DateTimeStamp)=@Sel_Year) As resultBWhere (resultA.UniqueAlarmId = resultB.UniqueAlarmIdAND resultA.[Count] = resultB.[Count])Group by resultA.MonitoredPoint, resultA.DateTimeStamp, resultB.DateTimeStampThanks for your help and time.AlainRegards,Alain | 
                                             
                                         
                                     | 
                             
       
                            
                       
                          
                            
                                    | 
                                     gbritton 
                                    Master Smack Fu Yak Hacker 
                                     
                                    
                                    2780 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2015-01-09 : 08:45:33
                                          
  | 
                                         
                                        
                                          Let @option be a bit.  When @option <> 1, use the date parameters; when @option = 1, ignore the date parameters.  Then write your WHERE clause like this:WHERE @option=1    OR   (       DATEPART(day, tbAlarmsEvents.DateTimeStamp)=@Sel_Day   AND DATEPART(month, tbAlarmsEvents.DateTimeStamp)=@Sel_Month   AND DATEPART(year, tbAlarmsEvents.DateTimeStamp)=@Sel_Year   )   | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                   
                            
                       
                          
                            
                                    | 
                                     AlainTV 
                                    Starting Member 
                                     
                                    
                                    5 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2015-01-12 : 19:41:29
                                          
  | 
                                         
                                        
                                          | Hi gbritton,Thanks so much for your help. Worked really good :)Regards,Alain  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                   
                            
                            
                                | 
                                    
                                      
                                     
                                    
                                 | 
                             
                         
                     | 
                 
             
         |   
     
     
            
              
	     |  
		
			
     
          
		 |