2013-03-01 2 views
-1

I가 다음 두 테이블SQL 쿼리, 인쇄하여 그룹에 너무 많은 기록

Emp_ID FirstName 
------------------------------ 
1   John 
2   Mark 
3   Steve 

표 2 : Emp_Transaction과 같이 인쇄해야

Trans ID Emp_ID start_Date End_date Paid_status Total_Hours  Total_Pay 
--------------------------------------------------------- 
1    1  01/07/13 01/14/2013  True  15.00  75.00 
2    1  01/15/13 01/21/2013  False  10.00  50.00 
3    1  01/21/13 01/27/2013  False  10.00  50.00 

4    2  01/07/13 01/14/2013  False  15.00  75.00 
5    2  01/15/13 01/21/2013  False  10.00  50.00 
6    2  01/21/13 01/27/2013  False  10.00  50.00 

7    3  01/07/13 01/14/2013  True  15.00  75.00 
8    3  01/15/13 01/21/2013  True  10.00  50.00 
9    3  01/21/13 01/27/2013  False  10.00  50.00 

결과 (오래된 미납 일)

ID FirstName start_Date End_date Paid_status Total_Hours  Total_Pay 
-------------------------------------------------------------- 
1    John  01/15/13 01/21/2013 False  10.00  50.00    
2    Mark  01/07/13 01/14/2013 False  15.00  75.00    
3    steve  01/21/13 01/27/2013 False  10.00  50.00 
+2

SQL은 ...입니까? –

+2

퍼지 버튼 (Fuzzy Button)의 질문 이외에 어떤 DBMS를 사용하고 있습니까? 신탁? 포스트그레스? –

+2

두 가지 질문 - (1) DB가 무엇입니까? SQL Server? MySQL은? 아니면 Linq를 통해 이것을 원하십니까? (2) 무엇을 시도 했습니까? 현재 작동하지 않는 SQL은 무엇입니까 ?? –

답변

2

사용중인 RDBMS를 언급하지 않았으므로 아래 쿼리는 거의 모든 RDBMS에서 작동합니다 (t 모든)

SELECT a.*, b.* 
FROM users a 
     INNER JOIN Emp_transaction b 
      ON a.Emp_ID = b.Emp_ID 
     INNER JOIN 
     (
      SELECT Emp_ID, MIN(start_DATE) min_date 
      FROM emp_transaction 
      WHERE Paid_Status = 'False' 
      GROUP BY Emp_ID 
     ) c ON b.Emp_ID = c.Emp_ID AND 
       b.start_date = c.min_DATE 

하지만 당신의 RDBMS가 Window Functions를 지원하는 경우,

SELECT a.*, 
     b.TransID, b.start_Date, b.End_date, 
     b.Paid_status, b.Total_Hours, b.Total_Pay 
FROM users a 
     INNER JOIN 
     (
      SELECT TransID, Emp_ID, start_Date, End_date, Paid_status, Total_Hours, Total_Pay, 
        ROW_NUMBER() OVER (PARTITION BY Emp_ID ORDER BY start_Date ASC) rn 
      FROM emp_transaction 
      WHERE Paid_status = 'False' 
     ) b ON a.Emp_ID = b.Emp_ID AND 
       b.rn = 1 
+0

어떤 [RDBMS] (http://en.wikipedia.org/wiki/Relational_database_management_system)를 사용하고 있습니까? 'RDBMS'는 * Relational Database Management System *을 의미합니다. 'RDBMS는 SQL의 기초입니다 .' 그리고 MS SQL Server, IBM DB2, Oracle, MySQL 등 현대의 모든 데이터베이스 시스템 ... –

+0

위의 쿼리가 작동했습니다. 도와 주셔서 감사합니다! – YDSWorld

관련 문제