/**ziping**/
SELECT
a. NAME,
a.REGION_CITY_NAME,
a.REGION_DISTRICT_NAME,
a.LAST_MODIFIED_DATE_,
b.LAST_MODIFIED_DATE_,
c.LAST_MODIFIED_DATE_,
d.LAST_MODIFIED_DATE_
FROM
(
SELECT
selff. NAME,
selff.REGION_CITY_NAME,
selff.REGION_DISTRICT_NAME,
selff.EVALUATION_ORG_,
selff.LAST_MODIFIED_BY_,
selff.LAST_MODIFIED_DATE_,
selff.CREATED_DATE_
FROM
(
SELECT
es. NAME,
es.REGION_CITY_NAME,
es.REGION_DISTRICT_NAME,
es.EVALUATION_ORG_,
selfee.LAST_MODIFIED_BY_,
selfee.LAST_MODIFIED_DATE_,
selfee.CREATED_DATE_,
row_number () OVER (
PARTITION BY es. NAME
ORDER BY
selfee.LAST_MODIFIED_DATE_ DESC
) AS nums
FROM
ENTERPRISE_SCORE es
LEFT JOIN ECE_NORMAL_CREDIT_EVALUATION_ ence ON es.NORMAL_ID = ence.id
LEFT JOIN ece_self_normal_relation_ EsNR ON EsNR.ECE_NORMAL_CREDIT_EVALUATION__ID = ES.ID
LEFT JOIN ece_evaluation_ selfee ON selfee.id = EsNR.SELF_NORMAL_EVALUATES_ID
WHERE
es.EVALUATION_ORG_ = 'ST'
) selff
WHERE
nums = 1
) a
LEFT JOIN /** quxian**/
(
SELECT
*
FROM
(
SELECT
es. NAME,
es.REGION_CITY_NAME,
es.REGION_DISTRICT_NAME,
es.EVALUATION_ORG_,
countryee.LAST_MODIFIED_BY_,
countryee.LAST_MODIFIED_DATE_,
row_number () OVER (
PARTITION BY es. NAME
ORDER BY
countryee.LAST_MODIFIED_DATE_ DESC
) AS nums
FROM
ENTERPRISE_SCORE es
LEFT JOIN ECE_NORMAL_CREDIT_EVALUATION_ ence ON es.NORMAL_ID = ence.id
LEFT JOIN ECE_COUNTY_NORMAL_RELATION_ ECNR ON ECNR.ECE_NORMAL_CREDIT_EVALUATION__ID = ES.ID
LEFT JOIN ece_evaluation_ countryee ON countryee.id = ecnr.COUNTY_NORMAL_EVALUATES_ID
WHERE
es.EVALUATION_ORG_ = 'ST'
) country
WHERE
nums = 1
) b ON a. NAME = b. NAME
LEFT JOIN /**shizou**/
(
SELECT
*
FROM
(
SELECT
es. NAME,
es.REGION_CITY_NAME,
es.REGION_DISTRICT_NAME,
es.EVALUATION_ORG_,
cityee.LAST_MODIFIED_BY_,
cityee.LAST_MODIFIED_DATE_,
row_number () OVER (
PARTITION BY es. NAME
ORDER BY
cityee.LAST_MODIFIED_DATE_ DESC
) AS nums
FROM
ENTERPRISE_SCORE es
LEFT JOIN ECE_NORMAL_CREDIT_EVALUATION_ ence ON es.NORMAL_ID = ence.id
LEFT JOIN ECE_CITY_NORMAL_RELATION_ ECNR ON ECNR.ECE_NORMAL_CREDIT_EVALUATION__ID = ES.ID
LEFT JOIN ece_evaluation_ cityee ON cityee.id = ecnr.CITY_NORMAL_EVALUATES_ID
WHERE
es.EVALUATION_ORG_ = 'ST'
) city
WHERE
nums = 1
) c ON a. NAME = c. NAME
LEFT JOIN /**st**/
(
SELECT
*
FROM
(
SELECT
es. NAME,
es.REGION_CITY_NAME,
es.REGION_DISTRICT_NAME,
es.EVALUATION_ORG_,
stee.LAST_MODIFIED_BY_,
stee.LAST_MODIFIED_DATE_,
row_number () OVER (
PARTITION BY es. NAME
ORDER BY
stee.LAST_MODIFIED_DATE_ DESC
) AS nums
FROM
ENTERPRISE_SCORE es
LEFT JOIN ECE_NORMAL_CREDIT_EVALUATION_ ence ON es.NORMAL_ID = ence.id
LEFT JOIN ECE_PROVINCE_NORMAL_RELATION_ epnr ON epnr.ECE_NORMAL_CREDIT_EVALUATION__ID = ES.ID
LEFT JOIN ece_evaluation_ stee ON stee.id = epnr.PROVINCE_NORMAL_EVALUATES_ID
WHERE
es.EVALUATION_ORG_ = 'ST'
) city
WHERE
nums = 1
) d ON a. NAME = d. NAME
sql这么长,就是装个*** 数据库是DB2 这里面其实就一个功能点 group by分组时,想根据某一列分组,但是又想查询其他列。 我这里的实现方法采用了row_number 函数方法
row_number () OVER (PARTITION BY col1 ORDER BY col2) col1 列名一,分组的列(非必须) col2列名二,排序的列(非必须) 这样就会生成新的一列,按col1 进行分组,按col2进行排序。把结果看成新表,where条件新列,可以实现筛选。
mysql可以关闭group by校验。