• Как сделать выборку или какую функцию использовать?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    SELECT заявки.заявка, 
           DATEDIFF( ss, заявки.дата, подтверждение.дата) AS ВСекундах,
           подтверждение.дата - заявки.дата AS КакДата
      FROM таблица AS заявки 
        INNER JOIN таблица AS подтверждение ON заявки.заявка = подтверждение.заявка
      WHERE (заявки.действие = 'Создание заявки') 
        AND (подтверждение.действие = 'Подтверждение заявки')

    Или просто:
    SELECT заявка, 
           CONVERT(VARCHAR, DATEDIFF( ss, MAX(дата), MIN(дата)) / 86400) AS Дней,
           CONVERT(VARCHAR, MAX(дата) - MIN(дата), 108 ) AS Часов
      FROM таблица
      GROUP BY заявка

    Или, если действий больше двух, старая школа:
    SELECT заявка, действие, дата,
           дата - 
           ( SELECT TOP 1 дата
               FROM таблица AS предыдущее
               WHERE (предыдущее.заявка = таблица.заявка) AND (предыдущее.дата < таблица.дата)
               ORDER BY дата DESC
           ) AS КакДата
      FROM таблица

    Или, если действий больше двух, новые возможности:
    SELECT заявка, действие, дата,
           дата - LAG( дата ) OVER(PARTITION BY заявка ORDER BY дата) AS КакДата
      FROM таблица
    Ответ написан
    Комментировать