我是个超级新手,正在尝试了解子查询的工作原理。
我试图从查询第一部分的结果中获取最小值和最大值:
SELECT DISTINCT
a.[Recording Date],
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
TRIM([Document Number]),
'0','n'),'1','n'),'2','n'),'3','n'),'4','n'),'5','n'),'6','n'),'7','n'),'8','n'),'9','n') AS pattern
FROM [TPEConversionTeam].[dbo].[KY_Shelby_Recorder_History] a
WHERE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
TRIM([Document Number]),
'0','n'),'1','n'),'2','n'),'3','n'),'4','n'),'5','n'),'6','n'),'7','n'),'8','n'),'9','n') = 'nnnnnn-n'
预期结果应为
1993-01-06
和 2023-12-31
:
但是我正在恢复所有内容,所以看起来我的子查询没有执行任何操作。
我的书面询问:
SELECT DISTINCT
a.[Recording Date],
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
TRIM([Document Number]),
'0','n'),'1','n'),'2','n'),'3','n'),'4','n'),'5','n'),'6','n'),'7','n'),'8','n'),'9','n') as pattern
FROM [TPEConversionTeam].[dbo].[KY_Shelby_Recorder_History] a
WHERE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
TRIM([Document Number]),
'0','n'),'1','n'),'2','n'),'3','n'),'4','n'),'5','n'),'6','n'),'7','n'),'8','n'),'9','n') = 'nnnnnn-n'
(SELECT MIN ([Recording Date]) AS MIN_DATE
FROM [TPEConversionTeam].[dbo].[KY_Shelby_Recorder_History]
union
select MAX ([Recording Date]) AS MAX_DATE
FROM [TPEConversionTeam].[dbo].[KY_Shelby_Recorder_History])
作为对您问题的直接回答,即“我正在尝试从查询第一部分的结果中获取最小值和最大值”,我可以向您展示一个解决方案。
第一步,您获取“查询的第一部分”,我假设它是历史记录表中的日期和文档编号,并将其放入临时表中(我在这里省略了所有“模式”替换它对日期没有影响)。
第二步,您可以查询临时表的最小值和最大值。
declare @Temp table ([Recording Date] date, [Document Number] nvarchar(100))
insert into @Temp ([Recording Date], [Document Number])
select distinct
a.[Recording Date],
a.[Document Number] AS pattern
from
[TPEConversionTeam].[dbo].[KY_Shelby_Recorder_History] a
select
min([Recording Date]) as MinOfRecordingDate,
max([Recording Date]) as MinOfRecordingDate
from @Temp
这是非常基本的sql,所以我不确定你为什么在挣扎 - 如果你只是学习sql,那么我会专注于继续学习基础知识,因为每次你都在堆栈溢出时寻求解决方案是不太可行的需要写一个查询。