| ■No94935 (ファイター さん) に返信
> 同一Nameの開始時間(Stime)が最終時間の時の Code です。
Name が同一で重複する STime が無いとしたとき、こういう場合のアプローチとしては
(1) Name が同一で STime に大きいものが無いレコードを抜き出す
SELECT
Name
, Code
, STime
, ETime
, (
SELECT
SUM(T2.MINUTES)
FROM
Table_1 T2
WHERE
T2.Name = T1.Name
)
FROM
Table_1 T1
WHERE
NOT EXISTS (
SELECT
*
FROM
Table_1 T3
WHERE
T3.Name = T1.Name
AND T3.STime > T1.STime
)
(2) Name でグルーピング
SELECT
Name
, (
SELECT
Code
FROM
Table_1 T2
WHERE
T2.Name = T1.Name
AND T2.STime = MAX(T1.STime)
) Code
, MAX(T1.STime) STime
, MAX(T1.ETime) ETime
, SUM(T1.MINUTES) MINUTES
FROM
Table_1 T1
GROUP BY
Name
が考えられます。
STime が重複する場合、(1) のパターンは使えないのでストアドでぶん回すとか
(2) のパターンで Min(Code) か Max(Code) とすればよいかと。
|