如何将相关子查询作为列

时间:2014-11-18 12:07:46

标签: sql sql-server sql-server-2012

我不知道我怎么能做这个sql查询,可能很简单,但我不知道怎么做。

我有两张桌子:

Table_Articles:
COD   NAME
1     Bottle    
2     Car
3     Phone


Table_Articles_Registered
COD_ARTICLE   DATE
    1         05/11/2014
    1         06/11/2014
    1         07/11/2014
    2         08/11/2014
    2         09/11/2014
    3         05/11/2014

我想把表中的Table_Articles_Registered带有MAX日期的行,最后我想得到这个结果:

COD    NAME       DATE
1      Bottle     07/11/2014
2      Car        09/11/2014
3      Phone      05/11/2014

我需要像这样使用sencente。它在子查询中的问题。后来我在句子中使用了其他内连接,这只是一个片段。

select   
        _Article.Code,   
        _Article.Description ,   
        from Tbl_Articles as _Article left join     
        (   
            select top 1 * 
            from ArticlesRegisterds where DATE_REGISTERED <= '18/11/2014'   
            order by DATE_REGISTERED 
        ) 
        as regAux  
        on regAux.CODE_ARTICLE= _Article.CODE

我不知道如何将表ArticlesRegisterds中的字段CODE_ARTICLE与第一个查询连接起来。

3 个答案:

答案 0 :(得分:1)

我认为这是一个带join的基本聚合查询:

select a.cod, a.name, max(ar.date) as date
from Artiles a join
     ArticlesRegisterds ar
     on ar.cod_article = a.cod
group by a.cod, a.name

答案 1 :(得分:1)

试试这个: -

SELECT TAR.COD_ARTICLE, TA.NAME, MAX(TAR.DATE)
FROM Table_Articles_Registered TAR JOIN
Table_Articles.TA ON TAR.COD_ARTICLE = TA.COD
GROUP BY TAR.COD_ARTICLE, TA.NAME;

答案 2 :(得分:0)

你不能这样做吗?:

SELECT
    Table_Articles.COD,
    Table_Articles.NAME,
    (
        SELECT MAX(Table_Articles_Registered.DATE) 
        FROM Table_Articles_Registered
        WHERE Table_Articles.COD_ARTICLE=Table_Articles.COD
    ) AS DATE
FROM
    Table_Articles