如何按算术顺序比较SQL中的字符串?
查询以下两个表: 创建表[dbo]。[MTO]如何按算术顺序比较SQL中的字符串?,sql,tsql,Sql,Tsql,查询以下两个表: 创建表[dbo]。[MTO] [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 创建表[dbo].[Industr
[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
创建表[dbo].[Industries]
[IndustryID] [int] IDENTITY(1,1) NOT NULL,
[Symbol] [nvarchar](5) NOT NULL,
[Sector] [nvarchar](50) NULL,
[Industry] [nvarchar](50) NULL
使用此查询:
从MTCorrelations中选择StockA、StockB、Correlations、LengthStr
哪里
斯托克
从中选择符号
行业=货币中心银行的行业
和
库存
从中选择符号
行业=货币中心银行的行业
按相关描述排序
结果会产生重复,因为表中有重复项,其中StockA与StockB的相关性列在一行中,而另一行中列出的相关性与StockB在StockA列中的相关性相同,反之亦然
由于每个相关性都列出了两次,我想添加一个where子句,将结果限制为stockA按字母顺序排在stockB之前的结果。我在斯托克a和斯托克B之间试了一个<,但没有成功。SQL是否有字符串比较运算符?为什么不这样做,它更有效,并且不会产生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
啊,著名的计算机软件问题:它不工作。想提供更多细节吗?这基本上就是他想要做的。在和存在将得到