Mysql 按发票日期排序,发票有多个且在公司表中,但仅显示公司列表

Mysql 按发票日期排序,发票有多个且在公司表中,但仅显示公司列表,mysql,coldfusion,greatest-n-per-group,groupwise-maximum,Mysql,Coldfusion,Greatest N Per Group,Groupwise Maximum,我有一个正在运行的查询。但是,只能按公司名称订购,不能按这些公司的内部发票日期订购: SELECT C.FULLNAME,C.COMPANY_ID,I.INVOICE_DATE FROM COMPANY C JOIN #dsn2_alias#.INVOICE I ON I.COMPANY_ID = C.COMPANY_ID WHERE I.INVOICE_ID IS NOT NULL AND I.INVOICE_DATE <= #attributes.dat

我有一个正在运行的查询。但是,只能按公司名称订购,不能按这些公司的内部发票日期订购:

SELECT C.FULLNAME,C.COMPANY_ID,I.INVOICE_DATE FROM COMPANY C
        JOIN #dsn2_alias#.INVOICE I ON I.COMPANY_ID = C.COMPANY_ID
        WHERE I.INVOICE_ID IS NOT NULL AND I.INVOICE_DATE <= #attributes.date# 
        AND C.COMPANY_ID NOT IN ( 
            SELECT C.COMPANY_ID FROM COMPANY C JOIN #dsn2_alias#.INVOICE I ON I.COMPANY_ID = C.COMPANY_ID WHERE I.INVOICE_ID IS NOT NULL AND I.INVOICE_DATE >= #attributes.date# 
        )
        GROUP BY C.COMPANY_ID,C.FULLNAME,I.INVOICE_DATE ORDER BY C.FULLNAME
和输出:

<cfoutput query="get_companies" group="company_id">
            <tr height="20" onMouseOver="this.className='color-light';" onMouseOut="this.className='color-row';" class="color-row">
                <td style="text-align:center;">#row#</td>
                <td style="text-align:center;">#dateformat(INVOICE_DATE,'dd/mm/yyyy')#</td>
                <td>#fullname#</td>
            </tr>
            <cfset row++/>
        </cfoutput>
实际上,GROUPBY子句在查询中不起作用。它被分组在cfoutput中

无论如何,这里有一个公司的名单。每个公司都有多张销售发票。我想列出在一段时间内没有销售的公司。我已经做到了,但是有一个小问题。我不能按时订购。我理解这里的错误,因为有多张发票,公司每次都重复,不能按时间订购。但是,如果订购,则在发票日期之前完成,因此公司会重复。但我想看到的是最后一次销售日期的公司名单。每次销售时都不会重复。希望我说得很清楚:


谢谢你的帮助

好的,我用草莓的GROUPWISE-max提示自己解决了这个问题:

SELECT C.FULLNAME,C.COMPANY_ID,I.INVOICE_DATE 
FROM   COMPANY C INNER JOIN 
            ( 
               SELECT I.COMPANY_ID,MAX(I.INVOICE_DATE) AS INVOICE_DATE 
               FROM   #dsn2_alias#.INVOICE I GROUP BY I.COMPANY_ID
            )  
            I  ON I.COMPANY_ID = C.COMPANY_ID

WHERE   I.INVOICE_DATE <= #attributes.date# 
AND     C.COMPANY_ID NOT IN 
        ( 
            SELECT C.COMPANY_ID 
            FROM   COMPANY C JOIN #dsn2_alias#.INVOICE I  ON I.COMPANY_ID = C.COMPANY_ID 
            WHERE  I.INVOICE_ID IS NOT NULL 
            AND    I.INVOICE_DATE >= #attributes.date# 
        )
GROUP BY C.COMPANY_ID,C.FULLNAME,I.INVOICE_DATE ORDER BY I.INVOICE_DATE

现在它是按时间排序的,不再重复公司:

这是一个内部联接。发票表中的发票id不可能为空。除此之外,考虑提供适当的DDL和/或SqLFIDLE连同期望的结果集。或者只需查看GROUPWISE下列出的1000个查询中的任意一个-MAXIMUM@Strawberry是的,这就是为什么我问我如何在不使用内部连接或任何其他方式的情况下实现它。我不知道如何在sql中使用JSFIDLE,我只能显示输出的图像,如何使用GROUPWISE-MAXIMUM?别忘了使用cfqueryparam