为什么SQL Server 2008 R2(版本10.50.2806.0)中的查询速度更快
SELECT
MAX(AtDate1),
MIN(AtDate2)
FROM
(
SELECT TOP 1000000000000
at.Date1 AS AtDate1,
at.Date2 AS AtDate2
FROM
dbo.tab1 a
INNER JOIN
dbo.tab2 at
ON
a.id = at.RootId
AND CAST(GETDATE() AS DATE) BETWEEN at.Date1 AND at.Date2
WHERE
a.Number = 223889
)B
Run Code Online (Sandbox Code Playgroud)
然后
SELECT
MAX(AtDate1),
MIN(AtDate2)
FROM
(
SELECT
at.Date1 AS AtDate1,
at.Date2 AS AtDate2
FROM
dbo.tab1 a
INNER JOIN
dbo.tab2 at
ON
a.id = at.RootId
AND CAST(GETDATE() AS DATE) BETWEEN at.Date1 AND at.Date2
WHERE
a.Number = 223889
)B
Run Code Online (Sandbox Code Playgroud)
? …
我在sql server 2012中遇到了新的主要olap函数问题.
CREATE TABLE Atext (id int, bez varchar(10), von date);
GO
INSERT INTO Atext VALUES (1, 't1', '2001-01-01'), (1, 't2', '2012-01-01'), (2, 'a1', '2020-01-01'), (2,'a1' , '2030-01-01'), (2, 'b', '2040-05-01'), (2, 'a3', '2989-05-01');
GO
SELECT
id,
bez,
von,
lead(von,1,0) over (partition by id ORDER BY von) -1 as bis
FROM
Atext
order by
id,
Von
Run Code Online (Sandbox Code Playgroud)
select查询会引发错误:
Msg 206, Level 16, State 2, Line 1
Operand type clash: int is incompatible with date
Run Code Online (Sandbox Code Playgroud)
为什么数据类型日期时间有限制?
我知道一个解决方法,但它不是很好:
SELECT
id,
bez,
CAST(vonChar …Run Code Online (Sandbox Code Playgroud)