1

Payment次のようなテーブルがあります。

---------------------------------------------
|PaymentId  |InvoiceId  |Created            |
|-----------|-----------|-------------------|
|10032      |184432     |7/10/2013 11:52am  |
|10033      |184458     |7/10/2013 1:53pm   |
|10034      |184412     |7/12/2013 12:02pm  |
|10035      |184412     |7/12/2013 12:03pm  |
|10036      |184413     |7/13/2013 2:15pm   |
|10037      |184413     |7/13/2013 3:20pm   |
---------------------------------------------

私がやろうとしているのは、同じ値を持ちInvoiceIdCreatedDateTime フィールドの差が 1 時間以上あるすべての行を返す SQL ステートメントを作成することです。

上記の例では、PaymentId の 10036 と 10037 が返されるようにします。これらは同じ InvoiceId を共有し、Createdフィールドが 1 時間以上離れているためです。

PaymentId の 10034 と 10035 は返されません。これは、同じ請求 ID を共有していても、1 時間以上離れていないためです。

PaymentId の 10032 と 10033 は、1 時間以上離れていても同じ InvoiceId を共有していないため、返されません。

これを書く上で助けていただければ幸いです!

SQL Server 2008 を使用しています。

4

2 に答える 2

0

これを試すことができます:

 select A.* from payment a 
 join payment1 b on a.InvoiceId=b.InvoiceId and datediff(hh,b.Created,a.created)>=1
 union
 select A.* from payment a 
 join payment1 b on a.InvoiceId=b.InvoiceId and datediff(hh,a.Created,b.created)>=1
于 2013-09-10T19:52:19.537 に答える