Solved

Function to Derive Field Names from Field Values - Sql Server

Posted on 2013-05-14
4
213 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
4 Comments
 
LVL 21

Accepted Solution

by:
Dale Burrell earned 500 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

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

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

Everyone has problem when going to load data into Data warehouse (EDW). They all need to confirm that data quality is good but they don't no how to proceed. Microsoft has provided new task within SSIS 2008 called "Data Profiler Task". It solve th…
Ever needed a SQL 2008 Database replicated/mirrored/log shipped on another server but you can't take the downtime inflicted by initial snapshot or disconnect while T-logs are restored or mirror applied? You can use SQL Server Initialize from Backup…
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
Viewers will learn how to use the SELECT statement in SQL to return specific rows and columns, with various degrees of sorting and limits in place.

630 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