1
SELECT DISTINCT
        Positions.Issuer_Name
    FROM
     Positions
        LEFT JOIN
        (
            SELECT DISTINCT
              [Assetid]
            FROM
                Report
        ) Report ON
            Report.[Assetid] = Positions.CUSIP //here instead of Report.[Assetid] i need to use `"right([Assetid], Len([Assetid])-1)"`

"right([Assetid], Len([Assetid])-1)"最初の文字を削除して比較するこれを使用する必要があります"Positions.CUSIP"

これを書くためのより良い方法はどれですか?

のように書く代わりに

" ) Report ON Report.right([Assetid], Len([Assetid])-1) = Positions.CUSIP"

変数を宣言して"right([Assetid], Len([Assetid])-1)"最初に実行する必要がありますが、JOINでどのように使用できますか?

4

2 に答える 2

4

それはあなたが何をしようとしているのかによります、あなたはright()その時点での値に基づいて比較したいですか、それともright()前の値が欲しいですか:

SELECT DISTINCT p.Issuer_Name
FROM Positions p
LEFT JOIN
(
    SELECT DISTINCT Right([Assetid], Len(Assetid)-1) TrimmedAssetid, [Assetid]
    FROM Report
) r 
    ON r.TrimedAssetid = p.CUSIP 

また

SELECT DISTINCT p.Issuer_Name
FROM Positions p
LEFT JOIN
(
    SELECT DISTINCT [Assetid]
    FROM Report
) r 
    ON Right(r.Assetid,  Len(r.Assetid)-1)) = Positions.CUSIP 
于 2012-08-01T18:01:57.977 に答える
0

これを試して :

AssetIDは、エイリアスで使用する必要がある列です。

SELECT DISTINCT
    Positions.Issuer_Name
FROM
 Positions
    LEFT JOIN
    (
        SELECT DISTINCT
          [Assetid]
        FROM
            Report
    ) Report ON
        right(Report.[Assetid], Len(Report.[Assetid])-1) = Positions.CUSIP
于 2012-08-01T17:59:52.830 に答える