作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可能没有正确搜索但找不到这个。我想将 2 行的数据合并为 1 行,列数加倍。首先选择具有最新时间戳的那个。然后,如果结果超过 2 行,则只取前 2 行。下面的示例数据和预期结果
来源:
ID Height Color Type TimeStamp
1 6 Green Plant 2017-09-23
1 24 Red Tree 2017-09-15
1 33 Pink Shrub 2016-05-14
2 12 Blue Car 2017-03-21
2 88 Pink Truck 2017-11-22
期望的结果:
ID Height1 Color1 Type1 Height2 Color2 Type2
1 6 Green Plant 24 Red Tree
2 88 Pink Truck 12 Blue Car
这几天一直在纠结这个问题。帮忙!!!
最佳答案
OUTER APPLY的方式:
SELECT TOP 1 WITH TIES y.ID,
y.Height as Height1,
y.Color as Color1,
y.[Type] as [Type1],
t.Height2,
t.Color2,
t.[Type2]
FROM YourTabel y
OUTER APPLY (
SELECT TOP 1 Height as Height2,
Color as Color2,
[Type] as [Type2]
FROM YourTabel
WHERE ID = y.ID AND [TimeStamp] < y.[TimeStamp]
ORDER BY [TimeStamp] DESC
) as t
ORDER BY ROW_NUMBER() OVER (PARTITION BY y.ID ORDER BY y.[TimeStamp] DESC)
输出:
ID Height1 Color1 Type1 Height2 Color2 Type2
1 6 Green Plant 24 Red Tree
2 88 Pink Truck 12 Blue Car
对于 SQL Server 2012 及更高版本,您可以使用 LAG :
SELECT TOP 1 WITH TIES y.ID,
y.Height as Height1,
y.Color as Color1,
y.[Type] as [Type1],
LAG(y.Height) OVER (PARTITION BY y.ID ORDER BY y.[TimeStamp] ASC) Height2,
LAG(y.Color) OVER (PARTITION BY y.ID ORDER BY y.[TimeStamp] ASC) Color2,
LAG(y.[Type]) OVER (PARTITION BY y.ID ORDER BY y.[TimeStamp] ASC) [Type2]
FROM YourTabel y
ORDER BY ROW_NUMBER() OVER (PARTITION BY y.ID ORDER BY y.[TimeStamp] DESC)
关于sql - MSSQL 使用双列将 2 行合并为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47827651/
这个问题在这里已经有了答案: Expand a div to fill the remaining width (21 个回答) 关闭 5 年前。
您好,我正在尝试制作一个简单的 2 列布局(实际上是表格转换),但遇到了问题。HTML: Title: Bla
听起来这应该是一个常见的问题,但我没有找到明显的技巧。 考虑下面的 knitr Rnw 文件, \documentclass[twocolumn, 12pt]{article} \usepackage
我是 Go 的新手,我几天前才开始学习它的并发性:-)。我有一个不同的库,它返回一个 time.Duration 类型,它有 Seconds,一个我想使用并存储在数据库中的 float64 精度值。
我是一名优秀的程序员,十分优秀!