2016-03-25 4 views
3

traurig über den obigen Titel setzen, sie ist nicht ganz sicher, wie man es Wort, aber hier ist der Kern ...SQL Server - ein Code-Block in eine Ansicht/temp Tabelle

ich gefunden habe, diese Abfrage unter denen die Meilen zwischen 2 Punkten in der Länge berechnen wird und Breitengrad ...

DECLARE @sourceLatitude FLOAT = 53.0150594250908; 
DECLARE @sourceLongitude FLOAT = -2.24460456782419; 
DECLARE @destinationLatitude FLOAT = 52.002933355733400; 
DECLARE @destinationLongitude FLOAT = -0.976678285584733; 
DECLARE @Location FLOAT 
SET @Location = SQRT(POWER(69.1 * (@destinationLatitude - @sourceLatitude), 
2) + POWER(69.1 * (@sourceLongitude 
- @destinationLongitude) 
* COS(@destinationLatitude/57.3), 2)) 
PRINT @Location 

jetzt auf dem Druckergebnis basiert, ich versuche, eine Ansicht zu erstellen, die eine Liste der Ergebnisse angezeigt werden. zum Beispiel habe ich eine Tabelle TABLE genannt, die eine Liste von

TableAddress 
Address   Long     Lat 
Address 1 52.5600450207834  -0.274050229426521 
Address 2 53.5746997938162  -0.62449270669287 
Address 3 50.3404675259117  -5.15208822743251 

Adresse enthält, und ich habe Tabledestination, die eine Liste der Ziele enthält:

TableDestination 
Address   Long     Lat 
Destination 1 52.5063420216939 -2.07973524437415 
Destination 2 50.9776014579626 -1.35438374178925 
Destination 3 53.5493068199536 -0.679623916124968 
  1. der Benutzer die AddressDestination über ein wählt Parameter
  2. basierend auf diesem Ergebnis möchte ich eine Ansicht erstellen, die auflistet, wie weit jede der Adressen vom Ziel entfernt ist, mit der obigen Abfrage.

Ich bin nicht usre, wo ich anfangen sollte, also könnte jemand bitte mich in die richtige Richtung zeigen, wie ich das erreichen könnte?

danke sehr viel

Beispiel Ergebnis:

theView 
    AddressName   DestinationName   Distance 
    Address 1    Destination 1    38 
    Address 2    Destination 1    49 
    Address 3    Destination 1    16 
+2

Sie können keine Variablen in einer VIEW erklären. Sie können in einem TVF. –

+0

danke für die Informationen, ich bin nicht sicher, ich werde in der Lage sein, dies tatsächlich zu erreichen, es zu mir selbst zu lesen, nein, ich denke, ich werde etwas anderes tun müssen – Crezzer7

Antwort

1

Verwendung Tabellenwertfunktionen: here ein Beispiel:

CREATE FUNCTION <function_name> (@prameter1,@parameter2) 

RETURNS TABLE 

AS 

    RETURN 

    (SELECT fiedd1, 
      field2 

     FROM <table name> 
     where field like @prameter1 
     ); 

IT dann rufen:

SELECT * FROM <function_name> (@prameter1,@parameter2) 

für den spezifischen Bedarf:

CREATE FUNCTION find_location (@sourceLatitude FLOAT,@sourceLongitude FLOAT,@destinationLatitude FLOAT,@destinationLongitude FLOAT) 

RETURNS TABLE 

AS 

    RETURN 

    (select SQRT(POWER(69.1 * (@destinationLatitude - @sourceLatitude), 
2) + POWER(69.1 * (@sourceLongitude 
- @destinationLongitude) 
* COS(@destinationLatitude/57.3), 2)) as location 
     ); 


GO 

die schließlich:

SELECT * FROM dbo.find_location (53.0150594250908, -2.24460456782419,52.002933355733400,-0.976678285584733) 
+1

ok danke, werde dies versuchen – Crezzer7

Verwandte Themen