我怎样才能 select 在 SQL 服务器中第一个插入行?
How can I select first inserted row in SQL Server?
这个问题可能与 Whosebug 无关。但这是我的问题,我不知道语法。
通过此查询,我 select 在他们的日期时间进行交易的人。
这是我的查询
我想编写 select 他们第一个 TransactionsTimeStamp 的查询?
我假设您正在寻找 ROW_NUMBER
, you could use them for example with a Common Table Expression (CTE):
这样的排名函数
WITH CTE AS
(
SELECT ..., RN = ROW_NUMBER() OVER (PARTITION BY FirstName, LastName
ORDER BY TransactionsTimeStamp ASC)
FROM dbo.TableName ... (join tables here)
)
SELECT ....
FROM CTE
WHERE RN = 1
...
是您想要 select 的列,您可以 select 全部,而不是 GROUP BY
.
但是如果您只想 select 每个用户的 TransactionsTimeStamp
列:
SELECT MIN(TransactionsTimeStamp) AS TransactionsTimeStamp, FirstName, LastName
FROM dbo.tableName ... (join tables here)
GROUP BY FirstName, LastName
您查询中的问题是您按日期列分组。因此,您将获得所有不同的 Date 值。您应该仅按 FirstName 和 LastName 分组,并将一些聚合函数应用于 Date 列。
如果只需要最小日期,那么您可以使用如下聚合函数获取该日期:
DECLARE @test TABLE
(
first_name NVARCHAR(MAX) ,
last_name NVARCHAR(MAX) ,
transaction_date DATETIME
)
INSERT INTO @test
VALUES ( 'A', 'B', '20150101' )
INSERT INTO @test
VALUES ( 'A', 'B', '20150120' )
INSERT INTO @test
VALUES ( 'C', 'D', '20150103' )
INSERT INTO @test
VALUES ( 'C', 'D', '20150119' )
SELECT first_name ,
last_name ,
MIN(transaction_date) AS min_transaction_date
FROM @test
GROUP BY first_name ,
last_name
输出:
first_name last_name min_transaction_date
A B 2015-01-01 00:00:00.000
C D 2015-01-03 00:00:00.000
Select firstname, lastname, min(date) as minimum_date from clubprofile_cp
group by firstname, lastname
这个问题可能与 Whosebug 无关。但这是我的问题,我不知道语法。
通过此查询,我 select 在他们的日期时间进行交易的人。
这是我的查询
我想编写 select 他们第一个 TransactionsTimeStamp 的查询?
我假设您正在寻找 ROW_NUMBER
, you could use them for example with a Common Table Expression (CTE):
WITH CTE AS
(
SELECT ..., RN = ROW_NUMBER() OVER (PARTITION BY FirstName, LastName
ORDER BY TransactionsTimeStamp ASC)
FROM dbo.TableName ... (join tables here)
)
SELECT ....
FROM CTE
WHERE RN = 1
...
是您想要 select 的列,您可以 select 全部,而不是 GROUP BY
.
但是如果您只想 select 每个用户的 TransactionsTimeStamp
列:
SELECT MIN(TransactionsTimeStamp) AS TransactionsTimeStamp, FirstName, LastName
FROM dbo.tableName ... (join tables here)
GROUP BY FirstName, LastName
您查询中的问题是您按日期列分组。因此,您将获得所有不同的 Date 值。您应该仅按 FirstName 和 LastName 分组,并将一些聚合函数应用于 Date 列。
如果只需要最小日期,那么您可以使用如下聚合函数获取该日期:
DECLARE @test TABLE
(
first_name NVARCHAR(MAX) ,
last_name NVARCHAR(MAX) ,
transaction_date DATETIME
)
INSERT INTO @test
VALUES ( 'A', 'B', '20150101' )
INSERT INTO @test
VALUES ( 'A', 'B', '20150120' )
INSERT INTO @test
VALUES ( 'C', 'D', '20150103' )
INSERT INTO @test
VALUES ( 'C', 'D', '20150119' )
SELECT first_name ,
last_name ,
MIN(transaction_date) AS min_transaction_date
FROM @test
GROUP BY first_name ,
last_name
输出:
first_name last_name min_transaction_date
A B 2015-01-01 00:00:00.000
C D 2015-01-03 00:00:00.000
Select firstname, lastname, min(date) as minimum_date from clubprofile_cp
group by firstname, lastname