#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