2017-12-21 6 views
-6

複数のテナントが存在するテナントがあり、一部のテナントには有効期限があります。残りのテナントはすべて同じテナントです。最新の有効期限を持つテナントを選択したい。最新の日付の属性のSQL選択列

これは私のコードです:

SELECT DISTINCT 
property.scode AS "M nr", 
tenant.scode AS "Contract nr", 
unit.scode AS "Unit", 
commamendments.DTSTART AS "Starting date", 
sqft.DTDATE AS "Expiry date", 
sqft.DSQFT0 AS "Area" 


FROM 
property 
LEFT JOIN unit ON unit.hproperty = property.hmy 
LEFT JOIN unitxref ON unitxref.hunit = unit.hmy 
LEFT JOIN commamendments ON commamendments.hmy = unitxref.hamendment 
LEFT JOIN tenant ON tenant.hmyperson = commamendments.htenant 
JOIN attributes ON attributes.HPROP = property.hmy 
JOIN sqft ON sqft.hpointer = unit.hmy 


WHERE property.scode = '481' 
AND sqft.DSQFT0 != '0' 
AND ('9/30/2017 12:00:00 AM' BETWEEN commamendments.DTSTART AND commamendments.DTEND) 
ORDER BY commamendments.DTEND` 

私は今受け取る何

Mnr  Contract nr  Unit  Starting date Expiry date Area 
481  1    1  9-10-2017   12-31-2018  400 
481  2    2  8-10-2017   12-31-2019  500 
..... 

とテーブルがあるしたい出力として:

Mnr  Contract nr  Unit  Starting date Expiry date Area 
481  1    1  9-10-2017   12-31-2018  400 
481  1    1  9-10-2017   09-20-2018  400 
481  2    2  8-10-2017   12-31-2019  500 
481  2    2  8-10-2017   1-31-2018  500 
..... 
+1

既に試行したクエリを提供できますか? –

+1

Alwayタグur DBMS。 https://stackoverflow.com/help/how-to-ask – Laxmi

+0

あなたの質問に詳細を追加してください。 – RAS

答えて

1

、あなたはこれを行うことができます。

SELECT t1.tenantId, t1.ExpiryDate 
FROM tenants AS t1 
INNER JOIN 
(
    SELECT tenantId, MAX(ExpiryDate) AS LatestExpiryDate 
    FROM tablename 
    GROUP BY tenantId 
) AS t1 ON t1.tenantId = t2.tenantId, t1.ExpiryDate = t2.LatestExpiryDate; 

が、内側には、各テナントIDの最新の日付を与える参加し、その後、元のクエリに参加して、最新の日付のものだけを取得することができます。

(テーブルのスキーマを指定していないので、カラムの名前を推測しなければなりませんでしたが、あなたがそのアイデアを持っていることを願っています)。

+0

ありがとう!私はこれを使用しようとしましたが、私のコードに実装する方法がわかりません。私は使用しているコードで質問を更新しました。 – Floor

0

最新のレコードを検索するRow_Number()を使用して、あなたのテナントの

あなたは、テーブルスキーマで作業しているRDBMSを指定しませんでしたので
Select * from (
    Select *,Row_number() over(Partition by Tenants order by expirationdate desc) as rn from tablea 
    ) x 
    Where rn = 1 
関連する問題