Access 데이터베이스를 다시 쓰는 중이고 재 작성해야 할 MS 액세스 쿼리가 있습니다. 그들은 기본적으로 다음과 같은 설정으로 구성됩니다.다중 행 테이블 함수 또는 저장 프로 시저 사용
SELECT *
FROM Query1, Query2, Query,...
이러한 쿼리는 2 개의 기존 데이터베이스에서 사용되며 일반적으로 데이터의 개수/합계로 구성됩니다. 그런 다음 합계를보고에 사용합니다. 대부분의 하위 쿼리는 이와 비슷합니다.
SELECT Count(Account), Reason, Sum(Amount)
FROM table1
GROUP BY Reason
다시 쓰기가 쉽지만 내 문제는 아닙니다. 내 문제는 약 20-30 개의 쿼리를 다시 작성해야한다는 것입니다. 사용자가 현재 가지고있는 요청 중 하나는 계정의 개수와 합계를 구성하는 계정 목록을 가져올 수있는 옵션입니다. 그래서 목록을 원하기 때문에 20-30 개의 쿼리가 두 배로 늘어납니다.
그래서 나는 이것이 그들이 를 원하는 특정 일에 대한 계수 또는 목록을 제공 할 수 있도록 설계하는 최선의 방법을 결정하기 위해 노력하고 나는이 작업을 수행하기 위해 다중 문 테이블 함수를 만드는 생각하지만, 저장 프로 시저 또는 뷰 또는 다른 것보다 더 좋을지 모르겠다.
나는 어떤 날짜로도 검색 할 수있는 다음 함수를 만들었고 계정 목록이나 카운트를 얻을 수있다.
CREATE FUNCTION [udf_GeBreakdown]
(
@BusinessDate datetime
, @ListOfAccounts bit
)
RETURNS @TableCount
TABLE
(
Account int, ReasonName varchar(50), Amount money
)
AS
BEGIN
DECLARE @PreviousDate smalldatetime
SET @PreviousDate = udf_GetNextImportDate(@BusinessDate, -1);
IF @ListOfAccounts = 0
BEGIN
INSERT INTO @TableCount
SELECT Count(Account), R.ReasonName, Sum(Amount)
FROM Debs.Resolved RS
INNER JOIN Debs.Reason R
ON RS.ReasonId = R.ReasonId
WHERE RS.DebitDate = @PreviousDate
AND RS.StatusId NOT IN (15, 17)
GROUP BY R.ReasonName
END
ELSE
BEGIN
INSERT INTO @TableCount
SELECT Account, R.ReasonName, Amount
FROM Debs.Resolved RS
INNER JOIN Debs.Reason R
ON RS.ReasonId = R.ReasonId
WHERE RS.DebitDate = @PreviousDate
AND RS.StatusId NOT IN (15, 17)
END
RETURN
END
난 그냥 계정 목록을 제공하고 나는이를 쿼리 할 때 내 카운트/합계를 받아야하는 경우 나는이 이런 식으로 일을 시간 낭비인지 모르거나하지 않습니다. 나는 이것을 어떻게 진행하는 것이 가장 좋은지에 대한 도움이나 방향을 찾고있다.