相关疑难解决方法(0)

如何获得MAX行

在 SQL Server 中,我总是发现获取数据集的最大行数很痛苦,我正在寻找一个方法列表来检索最大行数,并提供一些有关性能和可维护性的指导。

示例表:

DECLARE @Test TABLE (ID INT IDENTITY(1,1), name VARCHAR(50), 
                     dateOfBirth DATETIME, TaxNumber varchar(10))

INSERT INTO @Test (name, dateOfBirth, TaxNumber)
SELECT 'Fred', convert(datetime, '25/01/1976', 103), '123' UNION ALL
SELECT 'Bob', convert(datetime, '03/03/1976', 103), '234'  UNION ALL
SELECT 'Jane', convert(datetime, '13/06/1996', 103), '345' UNION ALL
SELECT 'Fred', convert(datetime, '14/02/1982', 103), '456' UNION ALL
SELECT 'Bob', convert(datetime, '25/10/1983', 103), '567' UNION ALL
SELECT 'Jane', convert(datetime, '12/04/1995', 103), '678' UNION ALL
SELECT 'Fred', convert(datetime, '03/03/1976', 103), '789'

select * from …
Run Code Online (Sandbox Code Playgroud)

sql-server

21
推荐指数
1
解决办法
9042
查看次数

SQL Server 2008 R2 中的超前/滞后实现:超出最大内存

背景

我正在尝试建立一个“访问”序列,其中如果在基本相同的地方(General_Location)检测到动物,则算作一次访问,但如果它去其他地方然后返回,则是对同一位置的额外访问。因此,如果在一个Location序列
A1, A2, A3, A3, A3, A1, B2, D4, A2
中检测到动物,例如所有 A(n) 位置都属于General_Location“A”,则前 6 个检测为访问 1 (@A),接下来为访问 2 (@B),接下来为访问 3 (@D),接下来是访问 4(返回 @A)。

由于LAG并且LEAD在 SQL Server 2008R2 中不可用(也不UNBOUNDED PRECEDINGPARTITIONing 子句中),我正在尝试解决此SQL 权威博客条目中所述的变通方法。

我遇到了以下内存问题(更不用说计算时间了):

WITH s AS (
    SELECT
        RANK() OVER (PARTITION BY det.Technology, det.XmitID ORDER BY DetectDate ASC, ReceiverID ASC) as DetID,
        COALESCE(TA.AnimalID, det.Technology+'-'+cast(da.XmitID AS nvarchar), 'BSVALUE999') as AnimalID,
        det.Technology, det.XmitID, DetectDate, det.location as …
Run Code Online (Sandbox Code Playgroud)

performance sql-server sql-server-2008-r2 window-functions query-performance

7
推荐指数
1
解决办法
2010
查看次数