2

SSRS のレポートの右端にある [最後のステップ] 列を追加するにはどうすればよいですか? 基本的に、その行の最新の日付を含む列の名前が必要です。実際のデータは数千行になり、それぞれに最大 15 の日付が含まれます。

Name      Step X      Step W      Step A      Step B      Step Y     Last Step
-------------------------------------------------------------------------------
John      1/21/2013   1/24/2013   1/3/2013    1/27/2013   1/7/2013   Step B
Sally     1/22/2013   1/24/2013   1/12/2013   1/1/2013    1/5/2013   Step W

単純なサンプル データを使用したSQL Fiddle 。

4

3 に答える 3

1

動的SQLを使用しない方法は次のとおりです(これはレポートサービス用であるため)。

SELECT T.*, C.ColName
FROM yourtable T
OUTER APPLY (SELECT TOP 1 *
             FROM (SELECT 'Step X', [Step X]
                   UNION ALL
                   SELECT 'Step W', [Step W]
                   UNION ALL
                   SELECT 'Step A', [Step A]
                   UNION ALL
                   SELECT 'Step B', [Step B]
                   UNION ALL
                   SELECT 'Step Y', [Step Y]) X(ColName,ColValue)
             ORDER BY ColValue DESC) C

フィドル

于 2013-02-18T19:51:21.207 に答える
1

最初の質問のクエリを変更して、これを行う別の方法を次に示します。これは結果に を追加するだけなので、各名前nameの を取得できます。max(date)

;with cte as
(
  select name, col, value
  from yourtable
  unpivot
  (
    value
    for col in ([Step X], [Step W], [Step A], [Step B], [Step Y])
  ) unpiv
) 
select t.name, 
  [Step X], 
  [Step W], 
  [Step A], 
  [Step B], 
  [Step Y],
  d.col LastStep
from yourtable t
cross apply
(
  select c1.col
  from cte c1
  inner join
  (
    select name, max(value) MaxDate
    from cte
    group by name
  ) c2
    on c1.value = c2.maxdate
    and c1.name = c2.name
  where t.name = c1.name
) d

デモで SQL Fiddle を参照してください

于 2013-02-19T01:40:26.180 に答える