Solved

SP to find and replace data...

Posted on 2011-03-03
3
263 Views
Last Modified: 2012-05-11
On SQL 2000....  Experts, I am terrible in creating SP's...    I need help in converting the process below into a SP....


 
-----------------------------------------------------------------------------------------------
-- STEP1:  THIS CREATES TEMP TABLE 'X_TEMP_Rpt_Admission20110302'
-----------------------------------------------------------------------------------------------
exec USP_Rpt_Admission20110302 '
SELECT HPP.ccGrpName, HPP.ccYRMM, MDP.PDSPCL, MDP.PDNAME AS DoctorName, 1 as cntr
FROM  dbo.VW_HPPATMFL HPP
INNER JOIN dbo.VW_MasterDoctorPt MDP ON HPP.PPGRPno = MDP.PJGRP# AND HPP.PPPATno = MDP.PJPAT#
WHERE (HPP.PPTYPE = ''IP'') 
AND (HPP.PPMTCD <> ''D'') 
AND (mdp.PJAFTP = ''2'') 
AND (HPP.ccYRMM BETWEEN DATENAME(year, DATEADD(m, - 24, CONVERT (varchar, GETDATE(), 112))) + ''-'' + RIGHT (''0'' + CAST(DATEPART(month, DATEADD(m, - 0, CONVERT (varchar, GETDATE(), 112))) AS VarChar), 2) and DATENAME(year, DATEADD(m, - 1, CONVERT (varchar, GETDATE(), 112))) + ''-'' + RIGHT (''0'' + CAST(DATEPART(month, DATEADD(m, - 1, CONVERT (varchar, GETDATE(), 112))) AS VarChar), 2))
AND (MDP.PDSPCL <> ''nur'') 
AND (HPP.ccGrpName = ''ELA'')
',
'ccYRMM',
'count(cntr)[]',
'PDSPCL,DoctorName'
-----------------------------------------------------------------------------------------------
-- STEP2:   I Need to find if records exist on Reporting Table using this criteria or similar...
-----------------------------------------------------------------------------------------------
SELECT COUNT(*) AS qty
FROM  dbo.Rpt_Admission24
GROUP BY RptYearMonth
HAVING (RptYearMonth = DATENAME(year, GETDATE()) + '-' + RIGHT('0' + CAST(DATEPART(month, DATEADD(m, - 1, GETDATE())) AS VarChar), 2))
-----------------------------------------------------------------------------------------------
-- STEP3: if NO critera exists... all i want to do is update with statement below...
-----------------------------------------------------------------------------------------------
insert into Rpt_Admission24 ([RptYearMonth]
      ,[PDSPCL]
      ,[DoctorName]
      ,[Month1]
      ,[Month2]
      ,[Month3]
      ,[Month4]
      ,[Month5]
      ,[Month6]
      ,[Month7]
      ,[Month8]
      ,[Month9]
      ,[Month10]
      ,[Month11]
      ,[Month12]
      ,[Month13]
      ,[Month14]
      ,[Month15]
      ,[Month16]
      ,[Month17]
      ,[Month18]
      ,[Month19]
      ,[Month20]
      ,[Month21]
      ,[Month22]
      ,[Month23]
      ,[Month24])
SELECT *
  FROM [ReportDB].[dbo].[X_TEMP_Rpt_Admission20110302] 
-----------------------------------------------------------------------------------------------
-- If records exist, I want to delete data then update
-----------------------------------------------------------------------------------------------
delete from Rpt_admission24
where (RptYearMonth = DATENAME(year, GETDATE()) + '-' + RIGHT('0' + CAST(DATEPART(month, DATEADD(m, - 1, GETDATE())) AS VarChar), 2))
GO

insert into Rpt_Admission24 ([RptYearMonth]
      ,[PDSPCL]
      ,[DoctorName]
      ,[Month1]
      ,[Month2]
      ,[Month3]
      ,[Month4]
      ,[Month5]
      ,[Month6]
      ,[Month7]
      ,[Month8]
      ,[Month9]
      ,[Month10]
      ,[Month11]
      ,[Month12]
      ,[Month13]
      ,[Month14]
      ,[Month15]
      ,[Month16]
      ,[Month17]
      ,[Month18]
      ,[Month19]
      ,[Month20]
      ,[Month21]
      ,[Month22]
      ,[Month23]
      ,[Month24])
SELECT *
  FROM [ReportDB].[dbo].[X_TEMP_Rpt_Admission20110302] 
GO

Open in new window

0
Comment
Question by:epicazo
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 23

Accepted Solution

by:
wdosanjos earned 500 total points
ID: 35032403
Check if this makes sense to you.  Also let me know what should be the input parameters if any.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE YourProcedureName
AS
BEGIN
	SET NOCOUNT ON;

	declare @qty int

	begin transaction

	-----------------------------------------------------------------------------------------------
	-- STEP1:  THIS CREATES TEMP TABLE 'X_TEMP_Rpt_Admission20110302'
	-----------------------------------------------------------------------------------------------
	exec USP_Rpt_Admission20110302 '
	SELECT HPP.ccGrpName, HPP.ccYRMM, MDP.PDSPCL, MDP.PDNAME AS DoctorName, 1 as cntr
	FROM  dbo.VW_HPPATMFL HPP
	INNER JOIN dbo.VW_MasterDoctorPt MDP ON HPP.PPGRPno = MDP.PJGRP# AND HPP.PPPATno = MDP.PJPAT#
	WHERE (HPP.PPTYPE = ''IP'') 
	AND (HPP.PPMTCD <> ''D'') 
	AND (mdp.PJAFTP = ''2'') 
	AND (HPP.ccYRMM BETWEEN DATENAME(year, DATEADD(m, - 24, CONVERT (varchar, GETDATE(), 112))) + ''-'' + RIGHT (''0'' + CAST(DATEPART(month, DATEADD(m, - 0, CONVERT (varchar, GETDATE(), 112))) AS VarChar), 2) and DATENAME(year, DATEADD(m, - 1, CONVERT (varchar, GETDATE(), 112))) + ''-'' + RIGHT (''0'' + CAST(DATEPART(month, DATEADD(m, - 1, CONVERT (varchar, GETDATE(), 112))) AS VarChar), 2))
	AND (MDP.PDSPCL <> ''nur'') 
	AND (HPP.ccGrpName = ''ELA'')
	',
	'ccYRMM',
	'count(cntr)[]',
	'PDSPCL,DoctorName'

	-----------------------------------------------------------------------------------------------
	-- STEP2:   I Need to find if records exist on Reporting Table using this criteria or similar...
	-----------------------------------------------------------------------------------------------
	SELECT @qty = COUNT(*)
	FROM  dbo.Rpt_Admission24
	GROUP BY RptYearMonth
	HAVING (RptYearMonth = DATENAME(year, GETDATE()) + '-' + RIGHT('0' + CAST(DATEPART(month, DATEADD(m, - 1, GETDATE())) AS VarChar), 2))

	if @qty = 0 begin
		-----------------------------------------------------------------------------------------------
		-- STEP3: if NO critera exists... all i want to do is update with statement below...
		-----------------------------------------------------------------------------------------------
		insert into Rpt_Admission24 ([RptYearMonth]
			  ,[PDSPCL]
			  ,[DoctorName]
			  ,[Month1]
			  ,[Month2]
			  ,[Month3]
			  ,[Month4]
			  ,[Month5]
			  ,[Month6]
			  ,[Month7]
			  ,[Month8]
			  ,[Month9]
			  ,[Month10]
			  ,[Month11]
			  ,[Month12]
			  ,[Month13]
			  ,[Month14]
			  ,[Month15]
			  ,[Month16]
			  ,[Month17]
			  ,[Month18]
			  ,[Month19]
			  ,[Month20]
			  ,[Month21]
			  ,[Month22]
			  ,[Month23]
			  ,[Month24])
		SELECT *
		  FROM [ReportDB].[dbo].[X_TEMP_Rpt_Admission20110302] 
	end else begin
		-----------------------------------------------------------------------------------------------
		-- If records exist, I want to delete data then update
		-----------------------------------------------------------------------------------------------
		delete from Rpt_admission24
		where (RptYearMonth = DATENAME(year, GETDATE()) + '-' + RIGHT('0' + CAST(DATEPART(month, DATEADD(m, - 1, GETDATE())) AS VarChar), 2))

		insert into Rpt_Admission24 ([RptYearMonth]
			  ,[PDSPCL]
			  ,[DoctorName]
			  ,[Month1]
			  ,[Month2]
			  ,[Month3]
			  ,[Month4]
			  ,[Month5]
			  ,[Month6]
			  ,[Month7]
			  ,[Month8]
			  ,[Month9]
			  ,[Month10]
			  ,[Month11]
			  ,[Month12]
			  ,[Month13]
			  ,[Month14]
			  ,[Month15]
			  ,[Month16]
			  ,[Month17]
			  ,[Month18]
			  ,[Month19]
			  ,[Month20]
			  ,[Month21]
			  ,[Month22]
			  ,[Month23]
			  ,[Month24])
		SELECT *
		  FROM [ReportDB].[dbo].[X_TEMP_Rpt_Admission20110302] 
	end

	commit
END
GO

Open in new window

0
 
LVL 32

Expert Comment

by:Ephraim Wangoya
ID: 35032458
TRY THIS
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE procName 
AS
BEGIN
  EXEC USP_Rpt_Admission20110302 '
		SELECT HPP.ccGrpName, HPP.ccYRMM, MDP.PDSPCL, MDP.PDNAME AS DoctorName, 1 as cntr
		FROM  dbo.VW_HPPATMFL HPP
		INNER JOIN dbo.VW_MasterDoctorPt MDP ON HPP.PPGRPno = MDP.PJGRP# AND HPP.PPPATno = MDP.PJPAT#
		WHERE (HPP.PPTYPE = ''IP'') 
		AND (HPP.PPMTCD <> ''D'') 
		AND (mdp.PJAFTP = ''2'') 
		AND (HPP.ccYRMM BETWEEN DATENAME(year, DATEADD(m, - 24, CONVERT (varchar, GETDATE(), 112))) + ''-'' + RIGHT (''0'' + CAST(DATEPART(month, DATEADD(m, - 0, CONVERT (varchar, GETDATE(), 112))) AS VarChar), 2) and DATENAME(year, DATEADD(m, - 1, CONVERT (varchar, GETDATE(), 112))) + ''-'' + RIGHT (''0'' + CAST(DATEPART(month, DATEADD(m, - 1, CONVERT (varchar, GETDATE(), 112))) AS VarChar), 2))
		AND (MDP.PDSPCL <> ''nur'') 
		AND (HPP.ccGrpName = ''ELA'')
		',
		'ccYRMM',
		'count(cntr)[]',
		'PDSPCL,DoctorName'
	
	IF EXISTS(SELECT COUNT(*) AS qty
		FROM  dbo.Rpt_Admission24
		GROUP BY RptYearMonth
		HAVING (RptYearMonth = DATENAME(year, GETDATE()) + '-' + RIGHT('0' + CAST(DATEPART(month, DATEADD(m, - 1, GETDATE())) AS VarChar), 2)))
	BEGIN
		DELETE FROM Rpt_admission24
		WHERE (RptYearMonth = DATENAME(year, GETDATE()) + '-' + RIGHT('0' + CAST(DATEPART(month, DATEADD(m, - 1, GETDATE())) AS VarChar), 2))

		INSERT INTO Rpt_Admission24 ([RptYearMonth]
			  ,[PDSPCL]
			  ,[DoctorName]
			  ,[Month1]
			  ,[Month2]
			  ,[Month3]
			  ,[Month4]
			  ,[Month5]
			  ,[Month6]
			  ,[Month7]
			  ,[Month8]
			  ,[Month9]
			  ,[Month10]
			  ,[Month11]
			  ,[Month12]
			  ,[Month13]
			  ,[Month14]
			  ,[Month15]
			  ,[Month16]
			  ,[Month17]
			  ,[Month18]
			  ,[Month19]
			  ,[Month20]
			  ,[Month21]
			  ,[Month22]
			  ,[Month23]
			  ,[Month24])
		SELECT *
		  FROM [ReportDB].[dbo].[X_TEMP_Rpt_Admission20110302] 
	END
	ELSE
	BEGIN
	  INSERT INTO Rpt_Admission24 ([RptYearMonth]
			  ,[PDSPCL]
			  ,[DoctorName]
			  ,[Month1]
			  ,[Month2]
			  ,[Month3]
			  ,[Month4]
			  ,[Month5]
			  ,[Month6]
			  ,[Month7]
			  ,[Month8]
			  ,[Month9]
			  ,[Month10]
			  ,[Month11]
			  ,[Month12]
			  ,[Month13]
			  ,[Month14]
			  ,[Month15]
			  ,[Month16]
			  ,[Month17]
			  ,[Month18]
			  ,[Month19]
			  ,[Month20]
			  ,[Month21]
			  ,[Month22]
			  ,[Month23]
			  ,[Month24])
		SELECT *
		  FROM [ReportDB].[dbo].[X_TEMP_Rpt_Admission20110302] 
	END
END
GO

Open in new window

0
 

Author Closing Comment

by:epicazo
ID: 35061504
Sorry for da delay.   Thank u experts!
0

Featured Post

Simplifying Server Workload Migrations

This use case outlines the migration challenges that organizations face and how the Acronis AnyData Engine supports physical-to-physical (P2P), physical-to-virtual (P2V), virtual to physical (V2P), and cross-virtual (V2V) migration scenarios to address these challenges.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Ever needed a SQL 2008 Database replicated/mirrored/log shipped on another server but you can't take the downtime inflicted by initial snapshot or disconnect while T-logs are restored or mirror applied? You can use SQL Server Initialize from Backup…
Recently we ran in to an issue while running some SQL jobs where we were trying to process the cubes.  We got an error saying failure stating 'NT SERVICE\SQLSERVERAGENT does not have access to Analysis Services. So this is a way to automate that wit…
Using examples as well as descriptions, and references to Books Online, show the documentation available for datatypes, explain the available data types and show how data can be passed into and out of variables.
Viewers will learn how the fundamental information of how to create a table.

734 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question