I have something I wrote in SQL that I want peoples opinions on as far as better practices or "could be problem" pieces.

Everywhere I go, I am generally the "expert" at SQL so I have no one to learn from. Thanks!

If you were training me, what would you have me fix...

Code:
--//datestamp variable
DECLARE @ASOF DATETIME;
SET @ASOF = '5/31/09';

/*
	1. BUILD INVOICE INDEX
*/
DROP TABLE CREDITAGING_INDEX
SELECT 
	CONVERT(VARCHAR(1),NULL) AS EXCLUDE,
	CONVERT(VARCHAR(255),NULL) AS EXCLUDE_REASON,
	DBO_INVOICE.GROUP_ZZ,
	DBO_INVOICE.PATIENT,
	DBO_INVOICE.INVOICE,
	DBO_INVOICE.INV_NUM,
	DBO_INVOICE.INV_BAL,
	@ASOF AS AS_OF
	INTO CREDITAGING_INDEX
FROM IDX.DBO.INVOICE DBO_INVOICE
WHERE
	(DBO_INVOICE.GROUP_ZZ=4 OR DBO_INVOICE.GROUP_ZZ=16 OR DBO_INVOICE.GROUP_ZZ=18 OR DBO_INVOICE.GROUP_ZZ=21 OR DBO_INVOICE.GROUP_ZZ=24)
	AND DBO_INVOICE.INV_BAL <0
	--AND DBO_INVOICE.FSC<>999
/*
	2. EXCLUDE CHARGE CORRECTIONS NO LONGER UNDER FSC 999
*/
UPDATE CREDITAGING_INDEX
	SET 
		CREDITAGING_INDEX.EXCLUDE='X',
		CREDITAGING_INDEX.EXCLUDE_REASON='CHARGE CORRECTION'
FROM CREDITAGING_INDEX 
INNER JOIN IDX.DBO.TRANSAC DBO_TRANSAC ON 
	CREDITAGING_INDEX.GROUP_ZZ=DBO_TRANSAC.GROUP_ZZ
	AND CREDITAGING_INDEX.PATIENT=DBO_TRANSAC.PATIENT
	AND CREDITAGING_INDEX.INVOICE=DBO_TRANSAC.INVOICE
WHERE
	(DBO_TRANSAC.GROUP_ZZ=4 OR DBO_TRANSAC.GROUP_ZZ=16 OR DBO_TRANSAC.GROUP_ZZ=18 OR DBO_TRANSAC.GROUP_ZZ=21 OR DBO_TRANSAC.GROUP_ZZ=24)
	AND DBO_TRANSAC.PAY_CODE_NUM = 97

/*
	3. PULL TRANSACTIONS FOR INVOICES
*/
DROP TABLE CREDITAGING_TRANSACTIONS
SELECT
	DBO_TRANSAC.GROUP_ZZ,
	DBO_TRANSAC.PATIENT,
	DBO_TRANSAC.INVOICE,
	CI.INV_NUM,
	DBO_TRANSAC.TRANSACTION_ZZ,
	DBO_TRANSAC.PAY_CODE,
	DBO_TRANSAC.PAY_CODE_NUM,
	CASE 
		WHEN (DBO_TRANSAC.PAY_CODE_NUM = 99)
			--//FOR CHARGE TRANSACTIONS ONLY REPORT THE CHARGE $$
			THEN DBO_TRANSAC.CHARGE_AMOUNT
		ELSE
			--//ALL NON-CHARGE LINES
			(DBO_TRANSAC.DEBIT_AMT-DBO_TRANSAC.PAY_AMT-DBO_TRANSAC.ADJ_AMT-DBO_TRANSAC.CR_AMT)			
	END AS AMT,
	DBO_TRANSAC.CHARGE_AMOUNT,
	DBO_TRANSAC.DEBIT_AMT,
	DBO_TRANSAC.PAY_AMT,
	DBO_TRANSAC.ADJ_AMT,
	DBO_TRANSAC.CR_AMT,
	DBO_TRANSAC.PX_CODE,
	DBO_TRANSAC.POST_DT_1,
	DBO_TRANSAC.POST_PD,
	CONVERT(MONEY,0) AS RUNNING_TOTAL,
	CONVERT(VARCHAR(1),NULL) AS FLAG_RUNNING_TOTAL,
	CONVERT(VARCHAR(1),NULL) AS FLAG_BECAMECREDIT,
	CONVERT(BIGINT,0) AS NEW_ORDER

	INTO CREDITAGING_TRANSACTIONS		
FROM IDX.DBO.TRANSAC DBO_TRANSAC
INNER JOIN CREDITAGING_INDEX CI ON
	DBO_TRANSAC.GROUP_ZZ=CI.GROUP_ZZ
	AND DBO_TRANSAC.PATIENT=CI.PATIENT
	AND DBO_TRANSAC.INVOICE=CI.INVOICE
WHERE
	(DBO_TRANSAC.GROUP_ZZ=4 OR DBO_TRANSAC.GROUP_ZZ=16 OR DBO_TRANSAC.GROUP_ZZ=18 OR DBO_TRANSAC.GROUP_ZZ=21 OR DBO_TRANSAC.GROUP_ZZ=24)
	AND PAY_CODE_NUM <>70	--EXCLUDE FSC TRANSFERS
ORDER BY 
	--THIS IS CRUCIAL FOR THE NEXT PIECE TO WORK 
	DBO_TRANSAC.GROUP_ZZ,
	DBO_TRANSAC.PATIENT,
	DBO_TRANSAC.INVOICE,
	CASE	--I WANT THE CHARGES TO BE FIRST IN THE LIST DESPITE WHEN THEY WERE POSTED
		WHEN (DBO_TRANSAC.PAY_CODE_NUM=99)
			THEN 1
		ELSE
			DBO_TRANSAC.POST_DT_1
	END,
	DBO_TRANSAC.TRANSACTION_ZZ

/*
	4. ADD IDENTITY FIELD
*/
ALTER TABLE CREDITAGING_TRANSACTIONS ADD ID BIGINT IDENTITY(1,1)