Web*_*ere 2 sql t-sql sql-server
我有一张桌子可以捕捉用户体重和体脂百分比.我正在寻找一个sql查询,它将获得所有用户以及他们的第一个和最后一个条目(所以我可以锻炼总重量损失等)
表结构如下:
UserName NVARCHAR(128)
DateTimeStamp DateTime
BodyWeight DECIMAL(18,2)
BodyFatPercentage DECIMAL(18,2)
Run Code Online (Sandbox Code Playgroud)
我希望返回的数据如下:
Username|First Date|Weight|Body Fat Percentage|Last Date|Weight|Body Fat Percentage|
John|21 January 2015|80|25|14 February 2015|76|22|
Mary|15 January 2015|55|19|12 February 2015|53|18|
Danny|10 January 2015|75|23|10 February 2015|70|19|
Saul|05 January 2015|77|28|13 February 2015|76|27|
Run Code Online (Sandbox Code Playgroud)
提前致谢
您可以为每个用户分配升序和降序行号.该用户的第一个条目具有升序row_number1,最后一个条目具有降序row_number1.例如:
select UserName
, max(case when rn1 = 1 then DateTimeStamp end) as FirstDate
, max(case when rn1 = 1 then BodyWeight end) as BW
, max(case when rn1 = 1 then BodyFatPercentage end) as BFP
, max(case when rn2 = 1 then DateTimeStamp end) as LastDate
, max(case when rn2 = 1 then BodyWeight end) as BW
, max(case when rn2 = 1 then BodyFatPercentage end) as BFP
from (
select row_number() over (
partition by UserName
order by DateTimeStamp) rn1
, row_number() over (
partition by UserName
order by DateTimeStamp desc) rn2
, *
from YourTable
) as SubQueryAlias
group by
UserName
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |