하나의 열의 최대 날짜를 기준으로 세부 행을 취소하려고합니다. 간단한 max (date.field)를 실행하면 테이블이 작동하지 않습니다.최대 날짜/사례 설명
이SELECT
HBM_CLIENT.CLIENT_CODE,
HBM_NAME.NAME AS CLIENT_NAME,
PART_BILL1.PART_CAT_CODE AS BILLING_CODE,
PART_BILL1.EMPL_UNO AS BILLING_NAME_UNO,
HBM_PERSNL_BILL.EMPLOYEE_NAME AS BILLING_NAME,
PART_BILL1.PERCENTAGE AS BILLING_PERCENTAGE
FROM
HBM_CLIENT
INNER JOIN
HBM_NAME ON HBM_CLIENT.NAME_UNO = HBM_NAME.NAME_UNO
LEFT OUTER JOIN
TBM_CLMAT_PART AS PART_BILL1 ON PART_BILL1.CLIENT_UNO = HBM_CLIENT.CLIENT_UNO
AND PART_BILL1.PART_CAT_CODE = 'BILL'
LEFT OUTER JOIN
TBM_CLMAT_PART AS PART_BILL2 ON PART_BILL2.CLIENT_UNO = HBM_CLIENT.CLIENT_UNO
AND PART_BILL2.EFF_DATE > PART_BILL1.EFF_DATE
AND PART_BILL1.PART_CAT_CODE = 'BILL'
LEFT OUTER JOIN
HBM_PERSNL AS HBM_PERSNL_BILL ON PART_BILL1.EMPL_UNO = HBM_PERSNL_BILL.EMPL_UNO
GROUP BY
HBM_CLIENT.CLIENT_CODE, HBM_NAME.NAME,
PART_BILL1.PART_CAT_CODE, PART_BILL1.EMPL_UNO,
HBM_PERSNL_BILL.EMPLOYEE_NAME,
PART_BILL1.PERCENTAGE,
ORDER BY
HBM_CLIENT.CLIENT_CODE
는 이유는이 쿼리에 대한 문제는 어떤 이유로, 그것은 다시 모든 결과를 가져 오지 않는다는 것을, 그리고 : 나는 원래 내가이 자원 See the entry by Tom H.를 사용하여 구축이 쿼리를 사용하여 문제를 해결 내가 사용한 해결책 때문에.
case 문을 사용하는 것이 더 합리적인지 궁금합니다. 그러나 저는 case 문에 익숙하지 않습니다. 여기
내가 일하고 있어요 쿼리입니다 :`SELECT
HBM_CLIENT.CLIENT_CODE,
HBM_NAME.NAME AS CLIENT_NAME,
PART_BILL1.PART_CAT_CODE AS BILLING_CODE,
PART_BILL1.EMPL_UNO AS BILLING_NAME_UNO,
HBM_PERSNL_BILL.EMPLOYEE_NAME AS BILLING_NAME,
PART_BILL1.PERCENTAGE AS BILLING_PERCENTAGE,
Part_BILL1.EFF_DATE,
CASE
WHEN
MAX(Part_BILL1.EFF_DATE) > Part_BILL1.EFF_DATE THEN max(Part_BILL1.EFF_DATE) ELSE Part_BILL1.EFF_DATE END
FROM HBM_CLIENT
INNER JOIN HBM_MATTER
ON HBM_CLIENT.CLIENT_UNO = HBM_MATTER.CLIENT_UNO
INNER JOIN HBM_NAME
ON HBM_CLIENT.NAME_UNO = HBM_NAME.NAME_UNO
LEFT OUTER JOIN TBM_CLMAT_PART AS PART_BILL1
ON PART_BILL1.CLIENT_UNO = HBM_CLIENT.CLIENT_UNO
AND PART_BILL1.PART_CAT_CODE = 'BILL'
LEFT OUTER JOIN HBM_PERSNL AS HBM_PERSNL_BILL
ON PART_BILL1.EMPL_UNO = HBM_PERSNL_BILL.EMPL_UNO
WHERE
(HBM_CLIENT.CLIENT_CODE = '065011')
GROUP BY
HBM_CLIENT.CLIENT_CODE,
HBM_NAME.NAME,
PART_BILL1.PART_CAT_CODE,
PART_BILL1.EMPL_UNO,
HBM_PERSNL_BILL.EMPLOYEE_NAME,
PART_BILL1.PERCENTAGE,
Part_BILL1.EFF_DATE
HAVING
(Part_BILL1.EFF_DATE = CASE
WHEN MAX(Part_BILL1.EFF_DATE) > Part_BILL1.EFF_DATE THEN max(Part_BILL1.EFF_DATE) ELSE Part_BILL1.EFF_DATE END)`
그것은 실행하지만 그것은 즉 그냥 최대 당기는 아니에요, 두 행 대신 중 하나를 나에게 다시 제공합니다. T-SQL을 사용하고 Visual Studio를 사용하여 SSRS를 작성했습니다.
가능한 모든 질문에 기꺼이 답변 해 드리겠습니다. 설명이 좋지 않으면 사전에 사과드립니다.
| CLIENT_CODE | CLIENT_NAME | BILLING_NAME | EFF_DATE | PERCENTAGE |
| ------------+--------------+--------------+----------+------------|
| 123456 | Entity, Inc. | Attorney A | 1/1/1990 |50% |
| 123456 | Entity, Inc. | Attorney B | 1/1/1990 |50% |
| 123456 | Entity, Inc. | Attorney B | 1/1/2017 |50% |
| 123456 | Entity, Inc. | Attorney C | 1/1/2017 |50% |
당신이 제공 한 참고 자료에는 주어진 데이터가있는 특정 질문이있었습니다. 당신은 그 안에 무엇이 들어 있는지 알지 못하고 엄청난 양의 표를주고 있습니다. 테스트 데이터에서보다 단순화 된 버전을 제공 할 수있는 방법이 있습니까? 기본 데이터를 보지 않고도 세부 사항을 자세히 설명하는 것은 어렵습니다. – djangojazz
@djangojazz 충분히 합리적인 가격입니다! 여분의 물건을 제거 했으므로 거의 동일합니다. 현재 표시된 유일한 테이블은 내가 선택한 필드로 쿼리를 실행하는 데 필요한 테이블입니다. –