Запрос следующих двух таблиц:
CREATE TABLE [dbo].[MTCorrelations](</p>
<pre><code>[CorrelationID] [int] IDENTITY(1,1) NOT NULL,
[StockA] [nvarchar](5) NOT NULL,
[StockB] [nvarchar](5) NOT NULL,
[Correlation] [float] NOT NULL,
[LengthStr] [nvarchar](5) NOT NULL,
[Date] [datetime] NOT NULL
)
CREATE TABLE [dbo]. [Отрасли промышленности] (
[IndustryID] [int] IDENTITY(1,1) NOT NULL,
[Symbol] [nvarchar](5) NOT NULL,
[Sector] [nvarchar](50) NULL,
[Industry] [nvarchar](50) NULL
)
с этим запросом:
Выберите StockA, StockB, Correlation, LengthStr из MTCorrelations
ГДЕ
StockA IN
(Выберите символ из
Отрасли промышленности, ГДЕ промышленность = «Банки Центров денежных средств»)
И
StockB IN
(Выберите символ из
Отрасли промышленности, ГДЕ промышленность = «Банки Центров денежных средств»)
ЗАКАЗАТЬ ПО Корреляции DESC
В результате создаются дубликаты, поскольку в таблице есть дубликаты, в которых корреляция StockA и StockB указана в одной строке, а такая же корреляция указана в другой строке с StockB в столбце StockA, и наоборот.
Поскольку каждая корреляция указана дважды, я решил добавить предложение where, чтобы ограничить результаты теми, в которых stockA находится в алфавитном порядке перед stockB. Я пробовал <между stockA и stockB, и это не сработало. Есть ли в SQL оператор сравнения строк? </p>