0

昨日の質問の続きです。
元の質問を拡張する必要があるかどうかわからなかったので、新しい質問を開始することにしました (我慢してください...)

SELECTは現時点では次のようになっています。

SELECT *
FROM
(
    SELECT 
        a.guid_column1, b.guidID_column1, c.date_column1, d.guid_column1
        ROW_NUMBER() OVER (PARTITION BY a.guid_column1, b.guid_column1 ORDER BY c.date_column1 DESC) as rn 
    ...
    -- JOINS AND WHERE STUFF HERE
    ....
) t
WHERE t.rn = 1

次のような(予想される)結果が得られます。

a.guid_column1   b.guid_column1    c.date_column1    d.guid_column1
-------------------------------------------------------------------
a1               b1                07/08/2013       someUniqueID
a2               b2                05/06/2012       someUniqueID



トリッキーな部分は、その結果を でソートしたいということです。もちろん、dateaddこのようなものは常に同じとは限りません (実際、後でユーザーが入力します)。ORDER BY dateadd(month, a.float_column, c.date_column1) asc
a.float_column

SQL でこれを達成する方法はありますか (私は SQL Server 2005 を使用しています)

4

2 に答える 2

0

サブクエリに列を追加してみませんか?

select *
from
(
    select
        a.guid_column1, b.guidID_column1, c.date_column1, d.guid_column1,
        dateadd(month, a.float_column, c.date_column1) as sort_order,
        row_number() over (partition by a.guid_column1, b.guid_column1 order by c.date_column1 desc) as rn 
    --
    -- JOINS AND WHERE STUFF HERE
    --
) t
where t.rn = 1
order by t.sort_order asc
于 2013-08-08T08:07:35.187 に答える