0
A
回答
2
您可以使用条件聚合。问题是得到适当的排序和row_number()
可以帮助有:
select fieldname,
max(case when seqnum = 1 then oldvalue end) as oldvalue,
max(case when seqnum = cnt then newvalue end) as newvalue
from (select t.*,
row_number() over (order by id) as seqnum,
count(*) over() as cnt
from t
) t
group by fieldname;
1
假设你的id是和增量INT(即身份)
Declare @Table table (id int,FieldName varchar(25),OldValue varchar(20),NewValue varchar(25))
Insert into @Table (id,FieldName,OldValue,NewValue) values
(1,'MI','M','N'),
(2,'GENDER','Male','Female'),
(3,'GENDER','Female','Male'),
(4,'FIRSTNAME','','J'),
(5,'FIRSTNAME','J','Joh'),
(6,'FIRSTNAME','Joh','John'),
(7,'STATE','','NJ'),
(8,'COUNTRY','US','USA')
Select Sequence = min(MinRow)
,A.FieldName
,OldValue = max(case when id=B.MinRow then OldValue else null end)
,NewValue = max(case when id=B.MaxRow then NewValue else null end)
From @Table A
Join (Select FieldName,MinRow=min(ID),MaxRow=max(ID) From @Table Group by FieldName) B on A.FieldName=B.FieldName
Group by A.FieldName
Order by 1
返回
Sequence FieldName OldValue NewValue
1 MI M N
2 GENDER Male Male
4 FIRSTNAME John
7 STATE NJ
8 COUNTRY US USA
添加序列并按顺序排列如此
1
这应该产生正确的结果使用相当b ASIC SQL:
SELECT
mc1.FieldName,
mc2.OldValue, -- OldestValue would perhaps be more meaningful
mc3.NewValue -- Likewise, NewestValue here.
FROM (
SELECT FieldName, MIN(Id) MinId, MAX(Id) MaxId
FROM ModelChange
GROUP BY FieldName
) mc1
INNER JOIN ModelChange mc2 ON mc1.MinId = mc2.Id
INNER JOIN ModelChange mc3 ON mc1.MaxId = mc3.Id;
我所做的假设,即您的ID是渐进的,对于一个给定的字段名的最早的值将具有最小ID和最新的值将具有最大编号。
相关问题
- 1. 如何在没有日期的情况下在NSDate中存储时间?
- 2. 在没有Ado.net的情况下在excel中使用参数存储过程
- 3. 在没有存储过程的情况下返回错误
- 4. 如何在没有编程的情况下在android中查看(查看)数据库中存储的值
- 5. 如何写在存储过程中,如果状况的情况下
- 6. 如何在没有CLR的情况下在SQL Server 2008中调试存储过程?
- 7. 删除或存储过程中的PostgreSQL
- 8. 如何在没有约束检查的情况下删除表
- 9. 如何在没有存储过程/函数的情况下使用数据填充表格?
- 10. 在存储过程中删除SQL Server
- 11. 如何在c#中没有SqlDataSource的情况下在gridview中删除一行?
- 12. 如何在SQL Server 2005中没有选择的情况下执行存储过程?
- 13. android如何在没有年份的情况下存储日期?
- 14. PostgreSQL如何在没有时区的情况下存储DateTime
- 15. HIVE - 如何在没有元存储的情况下运作?
- 16. 如何在不使用存储过程的情况下在表函数中返回值exec?
- 17. 如何在SQL Server中存在外键约束的情况下删除表?
- 18. 如何在没有“删除”操作的情况下删除Object的属性
- 19. 如何在没有任何数据库的情况下保存我的datagridview?
- 20. SSMS:如何在没有脚本的情况下查看存储过程/视图/函数?
- 21. 如何在没有删除输入的情况下清空td的值?
- 22. 如何删除SQL Server中存储过程的版本
- 23. 如何在不使用任何DBMS的情况下在程序中存储键值对数据?
- 24. 在没有空值的情况下将POST数组存储在mysql中?
- 25. 如何在没有内容的情况下删除NicEdit中的空格?
- 26. “Puts()”函数如何在没有参数的情况下工作?
- 27. 在没有输出参数的情况下调用EF 6存储库模式中的存储过程
- 28. 如何在不删除变量的情况下删除变量中的数据?
- 29. 如何在SQL Server数据库中一次性删除所有存储过程?
- 30. 如何在没有存储库的情况下在Eclipse中安装Java EE
从您的原始数据中获得预期输出的条件是什么!你能再写一些吗? – pedram