小编JJA*_*SEN的帖子

使用top属性更快地查询

为什么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 sql-server query-hints sql-server-2008-r2

5
推荐指数
1
解决办法
264
查看次数

sql server lead - 日期问题

我在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)

sql sql-server date lead

5
推荐指数
1
解决办法
3568
查看次数

标签 统计

sql ×2

sql-server ×2

date ×1

lead ×1

query-hints ×1

sql-server-2008-r2 ×1