-2
DECLARE @run_date DATETIME
SELECT @run_date = '2016/05/30'
SELECT PAYMENT_LINE.active,
PAYMENT_LINE.alloc_date,
PAYMENT_LINE.allocation_ind,
PAYMENT_LINE.amount,
PAYMENT_LINE.fund_charge_id,
PAYMENT_LINE.paid_td,
PAYMENT_LINE.payment_id,
PAYMENT_LINE.payment_line_id,
PAYMENT_LINE.payment_type_code,
PAYMENT_LINE.period,
PAYMENT_LINE.reference_id,
PAYMENT_LINE.reversal_date,
PAYMENT_LINE.src_id
INTO #pym
FROM PAYMENT_LINE
WHERE alloc_date IS NOT NULL
AND alloc_date < @run_date
/*DELETE FROM #pym WHERE reversal_date IS NULL*/
DELETE
FROM #pym
WHERE reversal_date > @run_date
SELECT payment_id,
Total = SUM(amount)
INTO #pym1
FROM #pym
GROUP BY
payment_id
SELECT PAYMENT.payment_id,
PAYMENT.payment_amount,
Total
INTO #pym2
FROM #pym1,
PAYMENT
WHERE PAYMENT.payment_id = #pym1.payment_id
GROUP BY
PAYMENT.payment_id
HAVING Total > PAYMENT.payment_amount
SELECT MANUFACTURER.manufacturer_id,
MANUFACTURER.manufacturer_name,
alloc_date,
PAYMENT.payment_id,
PAYMENT.payment_amount,
Total
INTO #pym3
FROM #pym2,
PAYMENT,
MANUFACTURER,
PAYMENT_LINE
WHERE Total > PAYMENT.payment_amount
SELECT payment_id,
Total_payment = SUM(payment_amount - Total)
INTO #pym4
FROM #pym3
GROUP BY
payment_id
SELECT MANUFACTURER.manufacturer_id,
MANUFACTURER.manufacturer_name,
alloc_date,
PAYMENT.payment_id,
PAYMENT.payment_amount,
Total,
Total_payment
FROM #pym4,
#pym2,
PAYMENT,
MANUFACTURER,
PAYMENT_LINE
[不良习惯踢:使用旧样式的JOIN(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using -old-style-joins.aspx) - 旧式*逗号分隔的表*样式列表被替换为ANSI - ** 92 ** SQL标准中的* proper * ANSI'JOIN'语法(** more超过20年**之前),它的使用不鼓励 –
你在这里做了很多无用的工作,你为什么要继续创建这些临时表,然后立即删除它们?还请提供一些样本数据和预期产出。 –
最后一个'SELECT'没有任何'JOIN'谓词...为什么? – Devart