У меня проблема, когда в моем запросе нужно выбрать TransactionDateTime
из ActivityId = 6
вместо значения даты из ActivityId 66
.
Набор данных выглядит следующим образом:
HistoryId | CardId | ActivityId | TransactionId | TransactionDateTime
----------+--------+------------+---------------+----------------------------------
393338052 58329067 12 937DB39B-711B-E611-80D3-0025B5560BDC 2016-06-01 01:43:28.307
393342190 58329067 13 NULL 2016-06-01 01:50:02.243 2016-06-01 01:50:02.243
393506845 58329067 6 00000000-0000-0000-0000-000000000000 2016-06-01 08:51:44.640
393506845 58329067 66 00000000-0000-0000-0000-000000000000 2016-06-03 09:01:20.017
385651974 58329067 5 937DB39B-711B-E611-80D3-0025B5560BDC 2016-05-16 14:23:14.560
385596117 58329067 16 NULL 2016-05-16 13:10:16.600 2016-05-16 13:10:16.600
Мой запрос на данный момент выглядит следующим образом:
SELECT
CC.[CreditCardId],
CC.[ActivityId],
CC.[TransactionDateTime],
FROM
dbo.[CreditCard] CC WITH(NOLOCK)
WHERE
CC.[ActivityId] = 66
AND CC.[VANTransactionDateTime] >= @ReportStartDate
AND CC.[VANTransactionDateTime] < @ReportEndDate
Однако мне нужно изменить запрос для вывода TransactionDateTime из строки ActivityId 6 вместо TransactionDateTime из ActivityId 66. Все остальное должно исходить изActivityId 66 строки.Обе из 6 и 66 строк имеют одинаковый идентификатор карты и один и тот же TransactionId.
Я полагаю, что этого можно достичь, вставив отдельные идентификаторы CardID, сгруппировав их по CardID и TransactionId во временную таблицу, а затем используя ее для извлечения6 ряд.Но мне интересно, можно ли выполнить эту операцию в одной операции запроса, возможно, с помощью агрегатных функций с группой с помощью.
Любая помощь будет великолепной!
Спасибо