Drop Table
Support Forum for database administrators and web based access to important newsgroups related to databasesHi to all I wish to be able to have a standard select statement which has additional fields added to it at run-time based on supplied parameter(s). ie declare @theTest1 nvarchar(10) set @theTest1='TRUE' declare @theTest2 nvarchar(10) set @theTest2='TRUE' select p_full_name if @theTest1='TRUE' BEGIN other field1, END if @theTest2='TRUE' BEGIN other field2 END from dbo.tbl_GIS_person where record_id < 20 I do not wish to use an IF statement to test the parameter for a condition and then repeat the entire select statement particularly as it is a UNIONed query for three different statement ie declare @theTest1 nvarchar(10) set @theTest1='TRUE' declare @theTest2 nvarchar(10) set @theTest2='TRUE' if @theTest1='TRUE' AND @theTest2='TRUE' BEGIN select p_full_name, other field1, other field2 from dbo.tbl_GIS_person where record_id < 20 END if @theTest1='TRUE' AND @theTest2='FALSE' BEGIN select p_full_name, other field1 from dbo.tbl_GIS_person where record_id < 20 END . . . if @theTest<>'TRUE' BEGIN select p_full_name from dbo.tbl_GIS_person where record_id < 20 END Make sense? So the select is standard in the most part but with small variations depending on the user's choice. I want to avoid risk of breakage by having only one spot that the FROM, JOIN and WHERE statements need to be defined. The query will end up being used in an XML template query. Any help would be much appreciated Regards GIS Analyst
Post Follow-up to this messageIf you don't want to write three separate queries, then you'll probably have to use dynamic SQL and build up the query string dynamically: http://www.sommarskog.se/dyn-search.html http://www.sommarskog.se/dynamic_sql.html Alternatively, you could simply return all the columns all the time (perhaps using CASE to return empty values for the unwanted columns so as to minimize the data volume) and let the client decide which ones to present/process, but in a more complex case it might not be workable. Simon
Post Follow-up to this messageHi Simon thanks for the ideas. I did think about genearting the statement within a stored procedure but thought I would check to see if there were standard sql statement to do this first. One reason for not returning all columns all the time is to avoid record duplication when the optional fields are included. (Duplicates apart from the optional field) Regards GIS Analyst
Post Follow-up to this message
Show a Printable Version
Email This Page to Someone!
Receive updates to this thread