Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Function to Derive Field Names from Field Values - Sql Server

Posted on 2013-05-14
4
Medium Priority
?
217 Views
Last Modified: 2013-05-15
Hi all,
I've been trying to write a function to derive values from a table that I need to use for a sql server.  The Parameter to pass in is a unique identifier - AttributeID and the field name will be AttributeName.  

AttributeID                                                       AttributeName
AABA0A56-1736-4822-99BE-02E33E1B1B57      Department
EB19A347-C50F-4440-BF3E-359FB5F95987      Address
BC1E774F-A36F-4FDD-BD1A-35B398DF7142      Last Name
61D62DCA-C8B9-4B84-B3A4-37560F8652F8      First Name
53372579-B97C-4901-9ED8-3791B3DA05BF      Date of Birth

Has anyone done something like this before?  I'm not sure where to begin.

Thanks,
Julia
0
Comment
Question by:Redheadache
4 Comments
 
LVL 21

Accepted Solution

by:
Dale Burrell earned 2000 total points
ID: 39166859
If I understand you correctly, one of the two following options:

-- SVF - straight forward
create function dbo.Attribute_Name
(
  @Id varchar(38) -- or uniqueidentifier, varchar(38) will handle both int and guid
)
returns nvarchar(256) -- whatever is the max size of name
as
begin
  return (select Name from AttributeTable where id = @Id)
end

select dbo.Attribute_Name('123-123-123-12') -- Usage

-- OR

-- ITVF, often better performing, but slightly messier
create function dbo.Attribute_Name
(
  @Id varchar(38) -- or uniqueidentifier, varchar(38) will handle both int and guid
)
returns table
return (select Name from AttributeTable where id = @Id)

select (select top 1 Name from dbo.Attribute_Name('123-13-123-')) -- Usage

Open in new window

0
 
LVL 12

Expert Comment

by:funwithdotnet
ID: 39166883
Do you want to supply an ID and return the name?
0
 
LVL 49

Expert Comment

by:PortletPaul
ID: 39166891
mmm, I smell a performance rat

Is there more than just that one table involved here? those sample records look to me like pointers to some non-normalized data in some other table(s).
0
 

Author Comment

by:Redheadache
ID: 39168054
That's correct, supply an ID and return the name.  Then I need to use the name returned as a field name in a select statement.  I think I use brackets or something for that but I'll test it this morning to figure it out.

It is non-normalized raw data  - that's correct.  This is a thing that I will develop properly in the future but for now I just need something quick and dirty that I can reuse until I have time to get this data into a star schema and put together an analytic.  

It's a start up company and there are five thousand different projects going on so every second I save is one I can spend sleeping.

I'll try the suggestion above.  Thanks much for the quick responses.

J
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Question has a verified solution.

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

Why is this different from all of the other step by step guides?  Because I make a living as a DBA and not as a writer and I lived through this experience. Defining the name: When I talk to people they say different names on this subject stuff l…
When trying to connect from SSMS v17.x to a SQL Server Integration Services 2016 instance or previous version, you get the error “Connecting to the Integration Services service on the computer failed with the following error: 'The specified service …
Via a live example combined with referencing Books Online, show some of the information that can be extracted from the Catalog Views in SQL Server.
Using examples as well as descriptions, and references to Books Online, show the documentation available for datatypes, explain the available data types and show how data can be passed into and out of variables.

885 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