Новичок в SQL (действительно новый), нужно добавить всего строк

#sql #sql-server

#sql #sql-server

Вопрос:

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

 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. Вы хотите это в select?

2. Какая СУБД??? SQL — это просто язык, используемый несколькими поставщиками СУБД.

Ответ №1:

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

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

 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