【问题标题】:SQL Server: select only items that exist in nested tableSQL Server:仅选择嵌套表中存在的项目
【发布时间】:2014-07-18 19:01:10
【问题描述】:

我正在使用以下查询从一个表中选择货币列表,并从另一个表中获取相应的汇率,该表目前运行良好。

这里有人可以告诉我如何更改它,以便它只选择两个表中都存在的货币,即在表 E (C.currencyCode = E.from_currency) 中具有可用汇率的货币?

SELECT      C.currency,
            C.currencyCode,
            (
                SELECT      E.exchange_rate AS exchangeRate
                FROM        Exchange_Rates E
                WHERE       E.from_currency = C.currencyCode
                AND         E.to_currency = 'USD'
                FOR XML     PATH(''), ELEMENTS, TYPE
            )
FROM        Currencies C
ORDER BY    C.sortID, C.currency
FOR XML PATH('currencies'), ELEMENTS, TYPE, ROOT('ranks')

非常感谢您提供的任何帮助,蒂姆。

【问题讨论】:

    标签: sql sql-server select stored-procedures nested-queries


    【解决方案1】:

    你可以试试这个吗?

    SELECT      C.currency,
                C.currencyCode,
                (
                    SELECT      E.exchange_rate AS exchangeRate
                    FROM        Exchange_Rates E
                    WHERE       E.from_currency = C.currencyCode
                    AND         E.to_currency = 'USD'
                    FOR XML     PATH(''), ELEMENTS, TYPE
                )
    FROM        Currencies C
            JOIN Exchange_Rates E ON C.currencyCode = E.from_currency
    ORDER BY    C.sortID, C.currency
    FOR XML PATH('currencies'), ELEMENTS, TYPE, ROOT('ranks')
    

    【讨论】:

    • 非常感谢 - 让我检查一下。
    • 这很好用 - 感谢您的快速帮助!我会尽快接受。 :)
    【解决方案2】:
    SELECT      C.currency,
                C.currencyCode,
                (
                    SELECT      E.exchange_rate AS exchangeRate
                    FROM        Exchange_Rates E
                    WHERE       E.from_currency = C.currencyCode
                    AND         E.to_currency = 'USD'
                    FOR XML     PATH(''), ELEMENTS, TYPE
                )
    FROM        Currencies C
            INNER JOIN (Select MIN(exchange_rate),
            from_currency 
                from Exchange_Rates
                GROUP BY from_currency )E ON C.currencyCode = E.from_currency
    ORDER BY    C.sortID, C.currency
    FOR XML PATH('currencies'), ELEMENTS, TYPE, ROOT('ranks')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-05
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多