ОК, я довольно новичок в SQL и не получил много обучения!
Я использую SSMS для создания хранимых процедур и открытия их в Excel.
Код ниже работает просто отлично, но мне нужно добавить детализацию, чтобы получить больше информации о некоторых строках.
Мы должны следовать тому, что было выставлено и оплачено партией контрактов для нашего проекта. Каждый контракт имеет несколько строк с описанием и несколько других полей (ссылка, строка #, G / L # и т. Д.). Кроме того, у нас есть значение строки, сумма, по которой был выставлен счет для этой строки, и сумма, которая была выплачена.
Основная таблица «CSCOMVTL» содержит основную информацию, включая базовую стоимость и сумму счета, но не оплаченную сумму.
'JRAPRVTL' - список всех счетов с; номер счета-фактуры, дата счета-фактуры, сумма счета-фактуры и оплаченная сумма, которые нам, возможно, понадобится увидеть.
Таким образом, для каждой базовой линии нам нужна кнопка +/-, чтобы показать / скрыть детали счета.
Сумма счета и оплаченная сумма могут быть получены в результате накопления, но номер и дата не будут указаны в родительской строке. Если бы они могли находиться в том же столбце, что и другие ненужные поля, это было бы здорово, но я мог бы жить с двумя дополнительными столбцами.
Спасибо!
ALTER PROCEDURE [dbo].[marpt_qmd_AccPmt_DetailsST]
@contrat varchar(30), @projet varchar(30)
AS
BEGIN
CREATE TABLE #RPT
(
Ligne INT,
Lien INT,
Act VARCHAR (10),
Descr VARCHAR (90),
MntBase DECIMAL (20,2),
MntFact DECIMAL (20,2),
Modif VARCHAR (40),
Descr3 VARCHAR (90),
Lien2 INT,
MntPy DECIMAL (20,2) default '0',
)
INSERT INTO #RPT (Ligne, Lien, Act, Descr, MntBase, MntFact)
SELECT ROW, DETAILCHANGEORDERCOU, ACTIVITY, DESCRIPTION, AMOUNT, INVOICE
FROM cscomvtl
WHERE PROJECTNUMBER = @projet
and LTRIM(RTRIM(PONUMBER)) = @contrat
UPDATE #RPT
SET Modif=m.CHANGEORDERNUMBER, Descr3=m.DESCRIPTION, Lien2=m.CHANGEORDERCOUNTER
FROM cscomac m, #RPT r
where m.COUNTER=r.Lien
UPDATE #RPT
SET MntPy=payment
FROM #RPT r, (select POLINE, sum(payment) payment from jraprvtl where PROJECTNO=@projet
and LTRIM(RTRIM(PURCHASEORDER))=@contrat group by POLINE) d
where r.Ligne=d. POLINE
SELECT
Ligne as 'Ligne',
Act as 'Act.',
Descr as 'Description 1',
MntBase as '$ Base',
MntFact as '$ Invoiced',
Modif as 'Num. Modif.',
Descr3 as 'Description 2',
MntPy as '$ Paid'
FROM #RPT
Order by Ligne
Drop table #RPT