查找最新日期

时间:2017-03-19 08:37:01

标签: sql-server date max

示例表Cust

 CustID   | CustNameTx
 ---------+------
 1        | Paul
 2        | Bob
 3        | Chuck

示例表发票

 Date       | InvCustID
 -----------+------
 19/02/2017 | 2
 19/02/2017 | 1
 19/02/2018 | 2
 19/02/2017 | 3

示例结果

CustID | CustNameTx | Expired
 ------+------------+---------
1      |   Bob      |    19/02/2017
3      |   Chuck    |    19/02/2017

我正在尝试编写生成结果所需的SQL代码,如上所述。 在第一个表中,我有客户记录。 第二个表包含有效期的客户发票。 我正在尝试编写一个代码,该代码可以找到30天前成员资格已过期并且尚未续订的客户。因此,代码需要跳过那些已更新成员资格的客户。 我正在研究Microsoft SQL。

到目前为止,这是我成功写的。

SELECT CuFirstNameTx, CuStoreNoTx_N 
FROM T_CuCust 
INNER JOIN T_IIInvoiceItem ON IICustID=CuCustID
WHERE DATEDIFF (d, IIShipDate_N,GetDate()) = 31

SELECT MAX(IIShipDate_N), IICustID 
FROM T_IIInvoiceItem 
GROUP BY IICustID

他们都分开工作,但是,我没有设法"合并"单行中的2行代码生成上面的结果。

4 个答案:

答案 0 :(得分:1)

处理此问题的一种非常简单的方法 -

  SELECT [CustID]
       , [CustNameTx]
       , MAX([Date]) AS [Expired]
    FROM [Invoices] AS I
    JOIN [Cust] AS C ON I.[InvCustID] = C.[CustID]
GROUP BY [CustID]
       , [CustNameTx]
 HAVING  MAX([Date]) < DATEADD(DAY, -30, GETDATE())

答案 1 :(得分:0)

你可能正在寻找这样的东西:

select * from
Cust c
cross apply (
    Select top 1 * 
    from Invoices i 
    where c.CustID = i.InvCustID and 
    i.[Date] < getdate() and i.[Date] > dateadd(day, -30, getdate()) i1
 where
     not exists (select 1 from Invoices i2 where c.CustID = i.InvCustID and i.[Date] > getdate())

答案 2 :(得分:0)

谢谢,我按照你的建议写了下面的

SELECT CuCustID
       , CuFirstNameTx
       , MAX(IIShipDate_N) AS Expired
    FROM T_IIInvoiceItem AS I
    JOIN T_CuCust AS C ON I.T_IIInvoiceItem = C.CuCustID
GROUP BY CuCustID
       , CuFirstNameTx
 HAVING  MAX(IIShipDate_N) < DATEADD(DAY, -30, GETDATE())

但是,它会返回错误

  

无效的列名称'T_IIInvoiceItem'。

这实际上是表的名称,它是正确的。

答案 3 :(得分:0)

根据Shuvankar的建议,我设法编写了我需要的代码

var flickerAPI = "http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?";

var request = new Request(flickerAPI, { 
                mode: 'no-cors',
                tags: 'searchTerm',
                tagmode: 'any',
                format: 'json'
            });

            fetch(request)
                .then(function (res) {
                    return res.json();
                })
                .then(function (text) {
                    console.log(text);
                });

非常感谢您的帮助