2017-01-04 4 views
0

Der Versuch, eine SELECT-Anweisung auszuführen, um eine Ansicht zu schaffen, die einige Berechnungen durchführt.SQL Deklarieren Variable innerhalb SELECT-Anweisung

I erneut berechnen den berechneten Wert in einem anderen Bereich verwendet werden soll

Form-Feld speichert geographische Daten und sde.st_y/x ist eine Funktion, die Länge/Breite der Form zurückkehrt

ohne

Beispiel:

SELECT 
    t.shape AS "Shape", 
    t.code AS "GeocodeTo", 
    sde.st_x(t.shape) AS "Longitude_decimal", 
    --The following field calculates sde.st_x again unnecesairly 
    TRUNC(ABS(sde.st_x(t.shape)) as "Absolute"   
FROM 
    towers t 

Antwort

1

Wenn Sie Funktion nicht aufgerufen werden soll zweimal dann versuchen, diese

select "Shape","GeocodeTo",TRUNC(ABS(Longitude_decimal)) 
from 
(
SELECT 
    t.shape AS "Shape", 
    t.code AS "GeocodeTo", 
    sde.st_x(t.shape) AS "Longitude_decimal" 
FROM 
    towers t 
) a 

Aber ich glaube, Oracle intelligent genug sein wird, um die Funktion nur einmal in Ihrer ursprünglichen Abfrage zu nennen, obwohl Sie es

die Funktion in Unterabfrage
1

Anruf zweimal anrufen und den Wert wieder verwenden außen:

SELECT "Shape", 
    "GeocodeTo", 
    "Longitude_decimal", 
    TRUNC(ABS("Longitude_decimal") AS "Absolute" 
FROM 
    (SELECT t.shape  AS "Shape", 
    t.code   AS "GeocodeTo", 
    sde.st_x(t.shape) AS "Longitude_decimal", 
    FROM towers t 
); 
Verwandte Themen