如何查询列v.2中具有相同值的行中具有最高列值的行

时间:2015-10-08 23:51:55

标签: mysql sql-server

这里还是SQL的熟练工。我有一个名为#everything的临时表,其中包含以下数据。 (标题缩写)。临时表有比这更多的列。

hh_key sub_id tier
   1    1234   T1
   2    2345   T2
   3    4567   T4
   3    4568   T3

我想返回“最佳”层的行。在我的情况下,最好的是'T'之后的最低数字。所以这是我想要的结果:

hh_key sub_id tier
   1    1234   T1
   2    2345   T2
   3    4568   T3

我知道这个确切的问题在这里被提出并得到解决:previous question 但答案中提供的语法对我不起作用。返回所有记录,而不仅仅是具有所需值的记录。

这将是我之前答案的版本,它不会返回值的子集。一切都归还了。

Select household_key, sm_subscription_id ,mytier
from #everything
where Mytier is not null
and Mytier IN (select MIN(mytier) from #everything group by household_key)
order by household_key

我从表中请求的列数超过3列的事实是否可以成为一个因素?

1 个答案:

答案 0 :(得分:0)

您可以使用ROW_NUMER()

SUBSTRING(tier, 2, LEN(tier) - 1)将在'T'之后提取数字。您可以使用提取的字符串并CAST将其INT用于ORDER BY的{​​{1}}子句中。

SQL Fiddle

ROW_NUMBER
相关问题