返回一列,该列是列值下方的最近值之间的差值

时间:2011-10-16 15:41:52

标签: sql-server-2008

我一直在想我有一个解决方案,但它没有成功。我有两个表,第一个表有一列有行(例如数字1到100)第二个表有(比方说)3行,值为9,53,78。(这些是abritrary,可能有一个,两个或四个值) 我想要返回的是3列的行:Nrs 1 -100,最大的(9,53,78)小于或等于(1-100)以及该最大数字与列之间的差异(1- 100)

1 个答案:

答案 0 :(得分:0)

对于值1到8,您将从OUTER APPLY获得NULL。

SELECT 
  N.Number, -- 1 to 100
  foo.TheValue, -- which is smaller or equal to (1-100) 
  (N.Number - foo.TheValue) -- difference between largest number and the column (1-100)
FROM
  NumberTable N
  OUTER APPLY
  (
  SELECT
     MAX(TheValue) AS Value1
  FROM
     TheOtherTable
  HAVING
     MAX(TheValue) <= N.Number
  ) foo