1

私はsql scriptそれone tableを使用してtwo aliasそれを作成しJOINていますが、なぜ、いつそれが必要なのかを理解する必要があります。詳しく教えてください。

SELECT

             ISNULL(MarketValue,0)   
        FROM
            (                  
            SELECT TOP 5

                Delta,
                MarketValue     
            FROM
                (
                SELECT DISTINCT

                   FormatNumber(SUM([CURRENT].MarkToMarket), 0, ',', 0) AS Delta,
                    AVG([CURRENT].Mark) * SUM([CURRENT].Position) AS NumericPosition,
                    FormatNumber(AVG([CURRENT].Mark) * SUM([CURRENT].Position)* CASE WHEN [CURRENT].SecurityType IN ('Equity','Equity Option') THEN 100 ELSE 1 END, 0, ',', NULL)  AS MarketValue
                FROM
                    NAV [CURRENT]
                    LEFT JOIN
                    NAV Compare ON
                    [CURRENT].PurchaseLotId = Compare.PurchaseLotId AND
                    Compare.Date = '2012-06-06'
                WHERE

                    [CURRENT].SecurityType not in ('Equity')
                GROUP BY

                ORDER BY
                    NumericDelta DESC
            ) Movers
        FOR XML PATH ('TR'), TYPE
        ) AS VARCHAR(MAX)
    )

Why it is used like  FROM
                    NAV [CURRENT]
                    LEFT JOIN
                    NAV Compare ON
                    [CURRENT].PurchaseLotId = Compare.PurchaseLotId AND
                    Compare.Date = '2012-06-06'

NAV は 1 つのテーブルにすぎません。同じテーブルの 2 つのエイリアス NAV [CURRENT] と NAV を比較して LEFT JOIN を使用する目的は何ですか?

詳しく教えてください。

4

2 に答える 2

4

テーブルの 2 つのレコードを比較しています

2 つの異なるレコードを表すには、2 つの異なるエイリアスが必要です。

たとえば、Employees: (Id, Name, ManagerId) というテーブルがある場合、ManagerId は従業員の直属のマネージャーの ID です。

ID    Name     ManagerId
1      CEO        null
2     YourBoss      1
3      You          2

そして、あなたと上司の名前を選択するクエリを実行したいとします。

SELECT emp.Name, mgr.Name
FROM Employees emp INNER JOIN Employees mgr on emp.ManagerId = mgr.Id
WHERE emp.Id = 3
于 2012-07-13T10:40:27.523 に答える
1

NAV はそれ自体と結合されているため、実際には nav のすべての列に 2 つのインスタンスがあります。現在と比較は、それらを区別するために使用されます。

于 2012-07-13T10:43:57.913 に答える