我是个超级新手,正在尝试了解子查询的工作原理。
我试图从查询第一部分的结果中获取最小值和最大值:
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 @KY_Shelby_Recorder_History table (
Id int identity(1,1),
[Recording Date] date,
[Document Number] nvarchar(100),
primary key (Id))
insert into @KY_Shelby_Recorder_History (
[Recording Date], [Document Number])
values
('1993-01-08', '111-1'),
('1993-01-09', '111-1'),
('2023-12-29', '111-1'),
('2023-12-30', '111-1'),
('1993-01-06', '111111-1'),
('1993-01-07', '111111-1'),
('2023-12-30', '111111-1'),
('2023-12-31', '111111-1')
select
min(a.[Recording Date]) as MinOfRecordingDate,
max(a.[Recording Date]) as MaxOfRecordingDate,
replace(a.[Document Number], '1', 'n') as [pattern]
from
@KY_Shelby_Recorder_History a
group by
replace(a.[Document Number], '1', 'n')
结果是:
最短记录日期 | 最大记录日期 | 文件编号 |
---|---|---|
1993-01-08 | 2023-12-30 | nnn-n |
1993-01-06 | 2023-12-31 | nnnnnn-n |
这是任何 sql 介绍中都涵盖的非常基础的 sql,因此您可能需要自己集中精力学习 sql 基础知识,以便了解基础知识。