سلام
در جواب سؤال شما باید بگویم هر دو دستور یکی میباشند و هر دو از اولین سطر تا سطر جاری را در نظر میگیرند.
در جواب سؤال شما باید بگویم هر دو دستور یکی میباشند و هر دو از اولین سطر تا سطر جاری را در نظر میگیرند.
RANGE UNBOUNDED PRECEDING AND CURRENT ROW
CREATE TABLE Employees ( EmployeeId INT IDENTITY PRIMARY KEY, Name VARCHAR(50), HireDate DATE NOT NULL, Salary INT NOT NULL ) GO INSERT INTO Employees (Name, HireDate, Salary) VALUES ('Alice', '2011-01-01', 20000), ('Brent', '2011-01-15', 19000), ('Carlos', '2011-02-01', 22000), ('Donna', '2011-03-01', 25000), ('Evan', '2011-04-01', 18500) GO
Select EmployeeId,Name,Salary,HireDate, First_VALUE(HireDate) OVER(ORDER BY Salary RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS First, Min(HireDate) OVER(ORDER BY Salary RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS Min FROM Employees ORDER BY EmployeeId GO
DECLARE @Varsort varchar(50) DECLARE @Varsort1 varchar(50) SET @Varsort='' SET @Varsort1='BusinessEntityID' SELECT BusinessEntityID, FirstName, LastName FROM Testoffset ORDER BY case when @Varsort='Firstname'then Firstname End ASC, case when @Varsort1= 'BusinessEntityID'then BusinessEntityID End ASC OFFSET 3 ROWS FETCH First 3 ROWS only
CREATE TABLE #Transactions ( AccountId INTEGER, TranDate DATE, TranAmt NUMERIC(8, 2) ); INSERT INTO #Transactions SELECT * FROM ( VALUES ( 1, '2011-01-15', 50),( 1, '2011-01-17', 500),( 1, '2011-01-17', 500), ( 1, '2011-01-16', 500),( 1, '2011-01-24', 75),( 1, '2011-01-26', 125), ( 1, '2011-02-28', 500),( 2, '2011-01-01', 500),( 2, '2011-01-15', 50), ( 2, '2011-01-22', 25),( 2, '2011-01-23', 125),( 2, '2011-01-26', 200), ( 2, '2011-01-29', 250),( 3, '2011-01-01', 500),( 3, '2011-01-15', 50 ), ( 3, '2011-01-22', 5000),( 3, '2011-01-25', 550),( 3, '2011-01-27', 95 ), ( 3, '2011-01-30', 2500) ) dt (AccountId, TranDate, TranAmt);
SELECT AccountId, TranDate, TranAmt, Sum(TranAmt) OVER(partition by Accountid ORDER BY TranDate RANGE UNBOUNDED PRECEDING) AS SumAmt FROM #Transactions GO
SELECT AccountId, TranDate, TranAmt, Sum(TranAmt) OVER(partition by Accountid ORDER BY TranAmt RANGE UNBOUNDED PRECEDING) AS SumAmt FROM #Transactions GO