2
4

1 に答える 1

1

次のクエリは、必要なものを取得する必要があります。少し長いですが、トリックを行います:

`select LIST.Civil_Parish, SD.Site_name, LIST.MSite_Date
from
(
select Civil_Parish, min(Site_date) as MSite_date
from SiteDetail
where Boolean = 1
group by Civil_Parish

union

select Civil_parish, min(Site_date) as MSite_date
from SiteDetail
where Civil_parish not in
(select Civil_parish
from SiteDetail
where Boolean = 1)
group by Civil_Parish) as LIST 
left join sitedetail SD on LIST.Civil_Parish = SD.Civil_Parish and LIST.MSite_Date = SD.Site_Date`

次の点に注意してください:

1) PowerUser のブール値の提案を使用しています。ブール列の値が 1 の場合、行は教区教会であり、そうでない場合は 0 です。

2) この例では、テーブル "SiteDates" と "SiteDetails" を 1 対 1 で結合しました。

クエリの核心は、A) 教区内で最も古い教区教会を見つけ、次に B) 教区教会のない教区を見つけることです。

A) のコードは次のとおりです。

'select Civil_Parish, min(Site_date) as MSite_date
from SiteDetail
where Boolean = 1
group by Civil_Parish'

次に、教区教会を持たない教区で最も古い教会とそれを結合します。

'select Civil_parish, min(Site_date) as MSite_date
from SiteDetail
where Civil_parish not in
(select Civil_parish
from SiteDetail
where Boolean = 1)
group by Civil_Parish'

次に、ユニオン クエリ (ここでは "LIST" という名前) を元の "SITEDETAIL" テーブルと Parish と Date に結合して、教会名を取得します。

于 2013-07-10T20:37:38.753 に答える