2011-10-16 88 views
0

之间的差值我一直在想我有一个解决方案,但它不工作。我有两个表,第一个表有一个包含行的列(例如数字1到100)。第二个表包含(比如说)3行,值分别为9,53,78(这些都是无关紧要的,可能有一个,两个或四个值) 我想要返回的是3列的行:Nrs 1 -100,(9,53,78)中的最大值,它小于或等于(1-100),并且该最大值和列(1-100)返回列值低于列值

回答

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