2017-06-28 4 views
0

J'ai besoin de charger une table de dimension avec les données de la table source. Je dois convertir certaines colonnes en différents types de données. Je ne sais pas comment configurer correctement mon code ou gérer certaines erreurs de syntaxe.Création d'une procédure stockée pour charger des données dans la table Dimension (avec conversions)

J'ai besoin de changer la latitude et la longitude en type géographique. Je dois également transformer le fuseau horaire du texte en entier. Voici le code sur lequel je travaille.

USE DBM298_DataMart; 
GO 

CREATE PROC Load_Dim_Aiports 
AS 
SET IDENTITY_INSERT Dim_Airports ON 

BEGIN 

INSERT INTO Dim_Airports 

(AirportId, AirportName, City, Country, LatLong , Altitude, Timezone) 

SELECT AirportId, AirportName,City,Country, Latitude, Longitude, Altitude, Timezone 

FROM src_flights; 
SET LatLong = geography::Point(Latitude,Longitude,4326) 

DECLARE @NegativeNumeric INT 

DECLARE @NegativeCharString VARCHAR(50) 

SELECT @NegativeNumeric = -1 * CAST (REPLACE(@NegativeCharString ,'-','') AS DECIMAL (10,2) 

END 

Répondre

1

Que diriez-vous quelque chose comme ceci:

USE DBM298_DataMart; 
GO 

CREATE PROC Load_Dim_Aiports 
AS 
SET IDENTITY_INSERT Dim_Airports ON 

BEGIN 

INSERT INTO Dim_Airports 

(AirportId, AirportName, City, Country, LatLong , Altitude, Timezone) 

SELECT AirportId, AirportName, City, Country, geography::Point(Latitude,Longitude,4326) as LatLong , Altitude, cast(Timezone as int) as Timezone 

FROM src_flights; 

END 
+0

Cela a fonctionné parfaitement merci! Je ne pouvais pas comprendre où la partie géographique est allé. Tu m'as beaucoup aidé avec celui-ci! –