Извлечение данных за наибольшую дату - PullRequest
0 голосов
/ 15 мая 2011

У меня повторяется как указано ниже

---------------------------------------------------------------------
| AcnttNo | Date1 | Balance1 | Date2  | balance3 | date4 | balance4 |
|--------------------------------------------------------------------
| 123     | 50282 | 3456     | 45465  | 56557    | 4556  | 324235   |
| 123     | 56757 | 23434    | 234235 | 344324   | 56476 | 5676     |
| 123     | 435   | 2434     | 2343   | 234545   | 24245 | 2423424  |
---------------------------------------------------------------------

Например:

для каждого AcnttNo будет несколько строк данных для баланса и даты.получить баланс на наибольшую дату.

Я использую PL / SQL-разработчик и базу данных оракула

Ответы [ 2 ]

1 голос
/ 15 мая 2011

Если вы хотите строку с наибольшей датой:

select
  *
from
  YourTable y
where
  greatest(y.date1, y.date2, y.date3) =
    (select max(greatest(yx.date1, yx.date2, yx.date3))
    from
      YourTable yx)

Если вам действительно нужен баланс, соответствующий наибольшей дате в этой строке:

select
  greatest(y.date1, y.date2, y.date3) as GreatestDate,
  case greatest(y.date1, y.date2, y.date3)
    when y.Date1 then 
      y.balance1
    when y.date2 then
      y.balance2
    when y.date3 then
      y.balance3
  end as GreatestDateBalance
from
  YourTable y
where
  greatest(y.date1, y.date2, y.date3) =
    (select max(greatest(yx.date1, yx.date2, yx.date3))
    from
      YourTable yx)

Но я думаю, что вам действительно нужно, это пересмотреть дизайн вашего стола. :)

0 голосов
/ 15 мая 2011

Я не уверен, почему в вашей таблице несколько дат / сальдо, однако приведенное ниже должно дать вам кое-что интересное, над чем вы можете работать ...

SELECT *
FROM YourTable T
WHERE NOT EXISTS (
  SELECT *
  FROM YourTable T2
  WHERE T2.AcntNo = T.AcntNo
  AND T2.Date1 > T.Date1
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...