Как вы сравниваете строки в SQL в алфавитном порядке? - PullRequest
0 голосов
/ 01 января 2011

Запрос следующих двух таблиц:

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>

1 Ответ

0 голосов
/ 01 января 2011

Почему бы не сделать это, это более эффективно и не приводит к перестановке A / B:

SELECT StockA, StockB, Correlation, LengthStr From MTCorrelations
WHERE StockA < StockB AND -- This is to remove the permutations
  EXISTS                  -- Fast check for StockA being within constraints
  (SELECT * 
   FROM Industries 
   WHERE Industry = 'Money Center Banks' AND 
         Symbol = StockA) AND
  EXISTS                  -- Fast check for StockB being within constraints
  (SELECT * 
   FROM Industries 
   WHERE Industry = 'Money Center Banks' AND 
         Symbol = StockB)      
ORDER BY Correlation DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...