2012-03-21 2 views
2

다른 활동을 다른 테이블에 저장하는 연습 관리 소프트웨어가 있습니다. 아래에 열거 된 . 내가 달성하려고하는 목표는 잔액이 있거나 휴면 상태이거나 지난 30 일 이내에 아무런 활동도하지 않은 계정을 찾는 것입니다. 액티비티 유형에는 청구서 제출, 지급, & 레저 노트가 포함됩니다. 나는 exel 내에서 다섯 가지 쿼리와 Vlookup 함수로 이것을 달성하고있다. 그러나 나는 이것을 하나의 SQL 쿼리로 깨끗하게하고 싶다. 가능한가? 다음은 현재 사용중인 다섯 가지 쿼리입니다.지난 45 일 동안 수집 활동이없는 SQL 찾기 계정

SELECT xrxTrnLgr.PatId, xrxTrnLgr.Balance, 
FROM xrxTrnLgr 
WHERE (xrxTrnLgr.Balance>$.01) 
ORDER BY xrxTrnLgr.PatId 

이 쿼리는

SELECT xrxPat.PatId, xrxPat.Coverage, xrxPat.DctId, xrxPat.EntryDate 
FROM xrxPat 
WHERE (xrxPat.EntryDate>{ts '2008-01-01 00:00:00'}) 
ORDER BY xrxPat.PatId 

이 쿼리는 의사 아이디

SELECT RecNo, xrxPatNotes.PatId, xrxPatNotes.NoteDate, xrxPatNotes.UserId 
FROM xrxPatNotes INNER JOIN 
(SELECT xrxPatNotes.PatId, Max (NoteDate) as LastDate 
FROM xrxPatNotes 
GROUP BY PatId) as B 
ON xrxPatNotes.PatId = B.PatId 
AND xrxPatNotes.NoteDate = B.LastDate 

이 쿼리는 원장 주에게

을 가장 최근 얻을 수 있습니다를 얻는 것입니다 균형을 가진 환자를 얻는 것입니다
SELECT xrxTrnicf.PatId, xrxTrnicf.UserId ,xrxTrnicf.PostDate 
FROM xrxTrnicf INNER JOIN 
(SELECT xrxTrnicf.PatId, Max (PostDate) as LastDate 
FROM xrxTrnicf 
GROUP BY PatId) as B 
ON xrxTrnicf.PatId = B.PatId 
AND xrxTrnicf.PostDate = B.LastDat 

이 쿼리는 최근 청구항

SELECT xrxTrnpay.PatId, xrxTrnpay.UserId ,xrxTrnpay.PostDate 
FROM xrxTrnpay INNER JOIN 
(SELECT xrxTrnpay.PatId, Max (PostDate) as LastDate 
FROM xrxTrnpay 
GROUP BY PatId) as B 
ON xrxTrnpay.PatId = B.PatId 
AND xrxTrnpay.PostDate = B.LastDate 

이 쿼리는 가장 최근의 지불을 엑셀 I 다음 VLOOKUP 모든 값을 내

를 얻고 오늘부터 빼기하는 것입니다 제출. 그런 다음 최소값을 얻기 위해 열을 만듭니다.

SQL 쿼리를 하나의 쿼리로 결합하는 데 도움이 될만한 사람이라면 크게 감사하겠습니다.

감사합니다.

+0

테이블 정의를 'CREATE TABLE'문으로 표시 할 수 있습니까? –

+0

죄송합니다.이 작업을 수행하는 방법이 명확하지 않습니다. 내가 말했듯이 SQL에 관해서는 초보자이고이 솔루션을이 사이트에서 읽은 것과 결합했습니다. 도움이되면 SQL Server 2008의 데이터베이스에서 데이터가 나오고 테이블 이름은 1입니다. xrxtrnpay 2. xrxtrnicf 3. xrxpat 4.xrxtrnlgr 5. xrxpatnotes. 나는 이것이 당신이 찾고있는 것이라는 것을 확신하지 못하기 때문에, 지식 부족으로 인해 미리 사과드립니다. –

+0

글쎄, 내가 볼 수있는 것을 기반으로, 다른 열/유형의 열을 반환하기 때문에 다른 쿼리가 붙어 있다고 말할 수 있습니다. 동일한 열을 반환 할 수 있다면 UNION이 목적을 달성 할 것입니다. –

답변

1

5 방향 공용체를 사용할 수 있습니다. 오히려 길기는하지만 속임수를 쓸 것입니다. 그것은 여전히 ​​5 개의 선택을 사용하므로 더 이상 효율적이지는 않습니다 (실제로는 효율성이 떨어질 수 있습니다). 그것은 단지 하나 개의 결과 집합으로 하나 개의 쿼리를 허용합니다 :

SELECT PatId, 
    'xrxTrnLgr' AS tablename, 
    'Balance' AS key1, Balance AS value1, 
    NULL AS key2, NULL AS value2, 
    NULL AS key3, NULL AS value3 
FROM xrxTrnLgr 
WHERE (xrxTrnLgr.Balance>$.01) 
UNION ALL 
SELECT PatId, 
    'xrxPat' AS tablename, 
    'Coverage' AS key1, Coverage AS value1, 
    'DctId' AS key2, DctId AS value2, 
    'EntryDate' AS key3, EntryDate AS value3 
FROM xrxPat 
WHERE (xrxPat.EntryDate>{ts '2008-01-01 00:00:00'}) 
UNION ALL 
SELECT PatId, 
    'xrxPatNotes' AS tablename, 
    'RecNo' AS key1, RecNo AS value1, 
    'NoteDate' AS key2, NoteDate AS value2, 
    'UserId' AS key3, UserId AS value3 
FROM xrxPatNotes INNER JOIN 
(SELECT xrxPatNotes.PatId, Max (NoteDate) as LastDate 
FROM xrxPatNotes 
GROUP BY PatId) as B 
ON xrxPatNotes.PatId = B.PatId 
AND xrxPatNotes.NoteDate = B.LastDate 
UNION ALL 
SELECT PatId, 
    'xrxTrnicf' AS tablename, 
    'UserId' AS key1, UserId AS value1, 
    'PostDate' AS key2, PostDate AS value2, 
    NULL AS key3, NULL AS value3 
FROM xrxTrnicf INNER JOIN 
(SELECT xrxTrnicf.PatId, Max (PostDate) as LastDate 
FROM xrxTrnicf 
GROUP BY PatId) as B 
ON xrxTrnicf.PatId = B.PatId 
AND xrxTrnicf.PostDate = B.LastDat 
UNION ALL 
SELECT PatId, 
    'xrxTrnpay' AS tablename, 
    'UserId' AS key1, UserId AS value1, 
    'PostDate' AS key2, PostDate AS value2, 
    NULL AS key3, NULL AS value3 
FROM xrxTrnpay INNER JOIN 
(SELECT xrxTrnpay.PatId, Max (PostDate) as LastDate 
FROM xrxTrnpay 
GROUP BY PatId) as B 
ON xrxTrnpay.PatId = B.PatId 
AND xrxTrnpay.PostDate = B.LastDate 
ORDER BY PatId 

이 열 (tablename, PatId, key1, value1, key2, value2, key3, value3) 하나 개의 결과 집합을 반환합니다. tablename 결과는 키/값 쌍 결과를 해석하는 방법을 알려줍니다.

+0

벤, 나는 이것을 시도하고 나는 'Union'이라는 키워드 근처에서 잘못된 구문을 얻는다.이 쿼리는 가장 최근의 주장 등을 얻지 만 여전히이 오류가 있다고 말하는 행을 삭제했다. 어떤 제안? –

+0

@MichaelSigman, oops 또한 "이 쿼리"라는 줄을 삭제합니다.그게 효과가있다, 당신은 정확한 오류 메시지를 게시 할 수 있습니까? 상황에 따라 버그를 찾는 데 도움이 될 수 있습니다. –

+0

키워드 'UNION'근처의 구문이 잘못되었습니다. 나는 이것이 얻을 수있는 유일한 오류이기 때문에 나는 powerpivot에 질의를 추가하고있다. 그것은 나에게 세부 사항을주지 않는다. 죄송합니다. 나는 정말로 도움을 주셔서 감사합니다. –

관련 문제