Создать отчет с помощью запроса объединения - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть 2 таблицы SALM(Sales table), которые подали BillNo,Date,Amount,CusId и CUSMAS(Customer table), имеющие ID,CustomerName. Я хочу создать отчет (между датами) с датой сверху и подробностями продаж (из SALM) этой даты ниже, затемОбщий объем продаж на указанную дату ниже.

Входные данные: с даты и до даты

Я пробовал этот запрос:

(SELECT DISTINCT SALM.INVDATE AS RES1,'' AS RES2 ,'' AS RES3 FROM SALM 
 WHERE SALM.INVDATE BETWEEN #01-Jan-2018# AND #01-Mar-2019# ORDER BY 
 SALM.INVDATE) UNION (SELECT SALM.ORDNO AS RES1, ACCMAS.ACCNAME AS RES2,'' 
AS RES3 FROM SALM INNER JOIN ACCMAS ON SALM.CUSTCODE = ACCMAS.ID WHERE 
SALM.INVDATE BETWEEN #01-Jan-2018# AND #01-Mar-2019# ORDER BY SALM.INVDATE 
UNION select SUM(SALM.AMOUNT) AS RES1, sum(SALM.TAX) AS RES2, 
sum(SALM.NTVALUE) AS RES3 FROM SALM WHERE SALM.INVDATE 
BETWEEN #01-Jan-2018# AND #01-Mar-2019# group by SALM.INVDATE ); 

Но результат не получается внужный мне формат

Формат отчета такой, как показано на рисунке

1 Ответ

0 голосов
/ 08 февраля 2019

Вы не сможете сделать это только в одном выражении SQL.

Когда вы используете T-SQL (MSSSQL), вы можете использовать это выражение для одной данной даты.

SELECT '' AS 'Bill No.', CONCAT('Date: ', '03.04.2018') AS 'Customer Name', '' AS 'Amount'
UNION ALL 
SELECT CONVERT(varchar, BillNo), CustomerName, CONVERT(varchar, Amount) 
FROM SALM LEFT JOIN CUSMAS ON SALM.CusId = CUSMAS.Id WHERE Date = '3.4.2018'
UNION ALL
SELECT '', 'Cash Total', 'don''t know what you want in herer'
UNION ALL 
SELECT '', 'Credit Total', 'don''t know what you want in herer'
UNION ALL
SELECT '', 'Day Total', CONVERT(varchar, SUM(Amount)) 
FROM SALM LEFT JOIN CUSMAS ON SALM.CusId = CUSMAS.Id WHERE Date = '3.4.2018'

Затем вы можете сделать это в C # через цикл всех возможных DateTimes и используйте выражение для каждого DateTime.

Когда вы просто хотите вызвать одну функцию SQL, вам нужно создать FUNCTION, который возвращает таблицу.Вы можете прочитать больше об этом здесь .

CREATE FUNCTION GetMyReport(@from DATETIME, @to DATETIME)
RETURNS @result TABLE
(
BillNo VARCHAR,
CustomerName VARCHAR,
Amount VARCHAR
)
BEGIN
    --FILL YOUR TABLE HERE
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...