Sql server SQL-如何在给定的数据集中找到最新的趋势
大家好,我有一个名为DataTable的表,我必须提取每个区域类型的行数。我正在使用SQLServer2008R2 !这是表脚本和示例数据 价值观 (74495133,'Pashchim Champaran','2010-2011',73.2), (74496133,'Kishanganj','2010-2011',71.9), (74497133,'Katihar','2010-2011',75.9), (74498133,'Saharsa','2010-2011',76.9), (74499133,'Darbhanga','2010-2011',54.4), (74500133,'Muzaffarpur','2010-2011',82.2), (74501133,'Gopalganj','2010-2011',68.3), (74502133,'Siwan','2010-2011',73.4), (74503133,'Saran','2010-2011',56.4), (74504133,'Vaishali','2010-2011',81.4), (74505133,'Khagaria','2010-2011',84.8), (74506133,'Bhagalpur','2010-2011',62.4), (74507133,'Munger','2010-2011',87.1), (74508133,'Lakhisarai','2010-2011',67.2), (74509133,'Sheikhpura','2010-2011',78.5), (74510133,'Nalanda','2010-2011',62.6), (74511133,'Patna','2010-2011',88.5), (74512,133,'Bhojpur','2010-2011',88), (74513133,'Buxar','2010-2011',69.8), (74514133,'Rohtas','2010-2011',75.6), (7451515133,'Aurangabad','2010-2011',76.7), (74516133,'Gaya','2010-2011',67.1), (74517133,'Nawada','2010-2011',75.6), (74518133,'Jehanabad','2010-2011',83.7), (74528133,'Pashchim Champaran','2011-2012',74.1), (74529133,'基桑甘吉','2011-2012',82), (74530133,'Katihar','2011-2012',80), (74531133,'Saharsa','2011-2012',81.5), (74532133,'Darbhanga','2011-2012',59.9), (74533133,'Muzaffarpur','2011-2012',79.4), (74534133,'Gopalganj','2011-2012',78.7), (74535133,'Siwan','2011-2012',77), (74536133,'Saran','2011-2012',62.3), (74537133,'瓦伊沙利','2011-2012',86.7), (74538133,'Khagaria','2011-2012',85.9), (74539133,'Bhagalpur','2011-2012',76.9), (74540133,'Munger','2011-2012',81.4), (74541133,'Lakhisarai','2011-2012',75.8), (74542133,'Sheikhpura','2011-2012',84.7), (74543133,'Nalanda','2011-2012',68.7), (74544133,'Patna','2011-2012',88.4), (74545133,'Bhojpur','2011-2012',86.4), (74546133,'Buxar','2011-2012',73.4), (74547133,'Rohtas','2011-2012',77.2), (74548133,'Aurangabad','2011-2012',75.7), (74549133,'Gaya','2011-2012',66.3), (74550133,'Nawada','2011-2012',75.1), (74551133,'Jehanabad','2011-2012',80.7), (74561133,'Pashchim Champaran','2012-2013',79.1), (74562133,'基桑甘吉','2012-2013',81.9), (74563133,'Katihar','2012-2013',83.3), (74564133,'Saharsa','2012-2013',87), (74565133,'Darbhanga','2012-2013',64.4), (74566133,'Muzaffarpur','2012-2013',83.7), (74567133,'Gopalganj','2012-2013',83.4), (74568133,'Siwan','2012-2013',76.7), (74569133,'Saran','2012-2013',64.9), (74570133,'Vaishali','2012-2013',78.4), (74571,133,'Khagaria','2012-2013',87.6), (74572133,'Bhagalpur','2012-2013',78), (74573133,'Munger','2012-2013',84.8), (74574133,'Lakhisarai','2012-2013',83.5), (74575133,'Sheikhpura','2012-2013',82.4), (74576133,'Nalanda','2012-2013',76.2), (74577133,'Patna','2012-2013',89.7), (74578133,'Bhojpur','2012-2013',86.9), (74579133,'Buxar','2012-2013',76.3), (74580133,'Rohtas','2012-2013',81.5), (74581133,'Aurangabad','2012-2013',73.3), (74582133,'Gaya','2012-2013',70.5), (74583133,'Nawada','2012-2013',79.2), (74584133,'Jehanabad','2012-2013',78.4) ; 这就是我想要得到的:Sql server SQL-如何在给定的数据集中找到最新的趋势,sql-server,tsql,Sql Server,Tsql,大家好,我有一个名为DataTable的表,我必须提取每个区域类型的行数。我正在使用SQLServer2008R2 !这是表脚本和示例数据 价值观 (74495133,'Pashchim Champaran','2010-2011',73.2), (74496133,'Kishanganj','2010-2011',71.9), (74497133,'Katihar','2010-2011',75.9), (74498133,'Saharsa','2010-2011',76.9), (74499
注:-结果表中的数据_值通过选择任意时间段显示 但在列(P_Cange,Trend)中,始终计算最新的时段数据。 我尝试了这么多的概念,但没有一个适合我,我最新的想法是,如果我们可以添加一个额外的列来缩短时间周期,比如最高时间周期是1秒,最高时间周期是2秒等等。。。。。。 现在我用这个 谢谢你的帮助
我希望,您正在尝试从特定列的“最高值-第二高值”中获取值
SELECT (SELECT MAX([col]) FROM [dbo].[YourTable]) - MAX([col])
FROM [dbo].[YourTable]
WHERE [col] < (SELECT MAX([col]) FROM [dbo].[YourTable])
SELECT(从[dbo].[YourTable])中选择MAX([col])-MAX([col])
来自[dbo]。[YourTable]
其中[col]<(从[dbo].[YourTable]中选择MAX([col]))
希望,这对您有所帮助。您的意思是,您需要最高值和第二高值之间的差异?是(最高时段的数据值)-(第二高时段的数据值),因为百分比变化是“第二高值”总是小于最高值,还是按降序排列在前两位,即使他们是平等的?你试过什么吗?有研究吗?知道您使用的是哪个版本的SQL Server吗?SQL Server 2008 R2,“第二高值”并不总是低于最高值。这与当时的值无关。我尝试过使用子查询,但它不起作用,使用MAX子查询只对单列有效。它不起作用,可能是我的问题不清楚。我现在已经按查询刷新了
Data_NId IUSNId Area_Name TimePeriod Data_Value P_Cange Trend
74495 133 Pashchim Champaran 2010-2011 73.2 5 P
74496 133 Kishanganj 2010-2011 71.9 -0.1 N
74497 133 Katihar 2010-2011 75.9 3.3 P
74498 133 Saharsa 2010-2011 76.9 5.5 P
74499 133 Darbhanga 2010-2011 54.4 4.5 P
74500 133 Muzaffarpur 2010-2011 82.2 4.3 P
74501 133 Gopalganj 2010-2011 68.3 4.7 P
74502 133 Siwan 2010-2011 73.4 -0.3 N
74503 133 Saran 2010-2011 56.4 2.6 P
74504 133 Vaishali 2010-2011 81.4 -8.3 N
74505 133 Khagaria 2010-2011 84.8 1.7 P
74506 133 Bhagalpur 2010-2011 62.4 1.1 P
74507 133 Munger 2010-2011 87.1 3.4 P
74508 133 Lakhisarai 2010-2011 67.2 7.7 P
74509 133 Sheikhpura 2010-2011 78.5 -2.3 N
74510 133 Nalanda 2010-2011 62.6 7.5 P
74511 133 Patna 2010-2011 88.5 1.3 P
74512 133 Bhojpur 2010-2011 88 0.5 P
74513 133 Buxar 2010-2011 69.8 2.9 P
74514 133 Rohtas 2010-2011 75.6 4.3 P
74515 133 Aurangabad 2010-2011 76.7 -2.4 N
74516 133 Gaya 2010-2011 67.1 4.2 P
74517 133 Nawada 2010-2011 75.6 4.1 P
74518 133 Jehanabad 2010-2011 83.7 -2.3 N
select *,ROW_NUMBER() OVER (PARTITION BY Area_Name ORDER BY Area_Name, TimePeriod DESC) AS RowNum from DataTable
SELECT (SELECT MAX([col]) FROM [dbo].[YourTable]) - MAX([col])
FROM [dbo].[YourTable]
WHERE [col] < (SELECT MAX([col]) FROM [dbo].[YourTable])