示例表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行代码生成上面的结果。
答案 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);
});
非常感谢您的帮助