tsql - SQL Server如何判断一个值是否改变
问题描述
我有一个包含三列的表:
Date, Symbol, Rankings
如何列出从昨天到今天排名变化的所有符号?
我可以很容易地得到今天的价值观:
SELECT TOP (1000)
[date], [symbol], [ranking]
FROM
[Rankings].[dbo].[Rankings]
WHERE
CONVERT(VARCHAR(10), date, 102) = CONVERT(VARCHAR(10), GETDATE(), 102)
ORDER BY
symbol DESC
解决方案
我在 SQL Server 中尝试过以下代码。有用。以下方法的优点是,它避免了在 WHERE 子句中使用函数,从而导致可搜索的查询。如果 Date 列具有正确的索引,则以下查询将提供良好的性能。
CREATE TABLE #rankings(symbol CHAR(10), [date] DATETIME, RANKING INT);
INSERT INTO #rankings VALUES ('MSFT','20190922', 1), ('MSFT','20190923',2), ('AMZN', '20190922', 3), ('AMZN','20190923',3);
DECLARE @todayStart DATETIME = CAST(GETDATE() AS DATE)
DECLARE @yesterDayStart DATETIME = DATEADD(DAY,-1,@todaystart)
SELECT @todayStart, @yesterDayStart
SELECT today.symbol, yesterday.ranking, today.ranking
FROM (SELECT * FROM #Rankings AS today WHERE today.date >= @todayStart) AS today
JOIN (SELECT * FROM #Rankings AS yesterday WHERE yesterday.date >= @yesterdayStart AND yesterday.date < @todayStart) AS yesterday
ON today.symbol = yesterday.symbol
WHERE today.ranking <> yesterday.ranking
推荐阅读
- python-3.x - 使用字典代替字典列表来降低程序复杂度
- python-2.7 - 无法在 linux alpine 上运行 picovoice
- javascript - 如何为切换按钮设置 Firebase 规则
- batch-file - 我如何制作它以便它接受变量输入并在完成后创建一个文本文件
- python - 如何从文件夹中分离两个不同命名的文本文件。是否有任何分类器直接基于赋予文件的标题
- python - 使用内部层的输出来拟合 Keras 模型?
- c - 函数内的动态内存分配不起作用,但没有发生错误
- fpga - dnnweaver V2 vivado 项目
- reactjs - React - 在渲染之外使用道具
- azure-web-app-service - 分配给应用服务的自定义域看起来没有找到 CSS