Hallo!

> Folgendes Problem: Ich muss aus einer externen Datenbank 
> Daten auslesen und sie etwas transformiert in meine eigene 
> Datenbank einfuegen. Im speziellen habe ich Probleme mit dem 
> Import einer Tabelle, die Adressen speichert.
> 
> Dort gibt es (unter Anderem) eine Spalte mit dem Namen 
> "telefonindex". Ausserdem gibt es zehn weitere Spalten: 
> "telefon1", "telefon2", "telefon3"...."telefon10". In jeder 
> dieser Spalte kann eine Telefonnummer stehen. (fuer jeden 
> einzelnen Eintrag in der Tabelle, wohlgemerkt!). Die Spalte 
> "telefonindex" gibt nun an, welche dieser Spalten die 
> wirkliche Telefonnummer enthaelt. Bitte, bitte, fragt mich 
> nicht, warum das so gemacht wurde....ich habe keine Ahnung... 
> Ich wuerde nur gerne mit einer einfachen Select-Anweisung 
> (Transact-SQL vom MS-Sql-Server 2000) die richtige 
> Telefonnummer herausfischen.
> 
> Sowas wie den Spaltennamen aus dem string "telefon" und der 
> in der Spalte "telefonindex" gespeicherten Zahl 
> zusammenbasteln geht wohl nicht.


Variante 1 - VIEW

CREATE VIEW vw_adressen AS
SELECT ..., telefon1 AS telefon FROM adressen WHERE telefonindex = 1
UNION
SELECT ..., telefon2 AS telefon FROM adressen WHERE telefonindex = 2
UNION
...


Variante 2 - Userdefined Function

CREATE FUNCTION telefon 
(@ti VARCHAR(20), @t1 VARCHAR(20), @t2 VARCHAR(20), ...)
RETURNS VARCHAR(20)
AS
CASE @ti
   WHEN 1 THEN RETURN @t1
   WHEN 2 THEN RETURN @t2
   ...
END

Die Funktion kannst Du z. B. so einsetzen:

SELECT ..., telefon(telefonindex, telefon1, telefon2, ...) FROM adressen


Variante 3 - Import mit Data Transformation Services

Im DTS kannst Du ein VBScript oder T-SQL-Script einsetzen, um jeweils
nur die richtige Telefonnummer zu importieren.

Freundliche Gr��e
Joachim van de Bruck 


| [aspdedotnet] als archive@jab.org subscribed
| http://www.dotnetgerman.com/archiv/aspdedotnet/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.dotnetgerman.com/listen/aspDEdotnet.asp

Antwort per Email an