Новое в SQL (действительно новое), нужно добавить общее количество строк - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь написать быстрый запрос для заданий за последние месяцы, у меня он отображает все нужные мне строки, теперь я хотел бы добавить итоговую строку.

DECLARE @fee DECIMAL(10, 2);
SET @fee = 99.79;

SELECT   
    t.jobnum, t.veh AS 'VEH', 
    CONVERT(VARCHAR, t.IssueDate, 1) AS 'ISS.DATE', 
    CONVERT(VARCHAR, t.CreatedDate, 1) AS 'ENT.DATE', 
    t.Id AS 'ID', 
    @fee AS 'FEE'
FROM
    dbo.jobs AS t
WHERE 
    t.CreatedDate >= DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0) 
    AND t.CreatedDate < DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0)

Теперь я хотел бы добавить следующее:

TOTAL JOBS XXXX   (xxxx - this would be a count of records)
FEE PER JOB: @fee
TOTAL FEE: XXXX.XX   (xxxx.xx - THIS IS the total jobs * @fee)

1 Ответ

0 голосов
/ 11 апреля 2019

Вниз как в качестве следующего набора результатов?

Вы можете вывести результаты вашего запроса во временную таблицу и затем выбрать из нее + создать другой набор результатов с дополнительной информацией:

declare @fee decimal(10, 2);
set @fee = 99.79;

SELECT t.jobnum, t.veh AS 'VEH', convert(varchar, t.IssueDate, 1) AS 
'ISS.DATE', convert(varchar, t.CreatedDate, 1) AS 'ENT.DATE', t.Id AS 
'ID', @fee AS 'FEE'
INTO #jobs
FROM dbo.jobs as t
WHERE t.CreatedDate >= DATEADD(mm,DATEDIFF(mm,0,GETDATE())-1,0) AND 
    t.CreatedDate < DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)

-- this will be your first resultset, the one you already have
SELECT * FROM #jobs

-- this will create another result set, with additional information
SELECT COUNT(*) TotalJobs
     , @fee AS FeePerJob
     , @fee * COUNT(*) AS TotalFee
  FROM #jobs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...