entityID フィールドから重複したエントリを返すことなく、特定のエンティティ レコードのリストを返すクエリを作成しようとしています。DISTINCT
entityID を超える結果セットを認識せず、DISTINCT
すべてのORDER BY
フィールドを返す必要があるレポート エンジンにリストが渡されているため、クエリを使用できません。
レポート エンジンも同じ実行で同じエンティティのレポートを 2 回処理できないため、結果セットに重複するエンティティ ID を含めることはできません。一時テーブルもサポートされていないという難しい方法を見つけました。
レポート エンジンでは entity_header レベルでの並べ替えしか許可されておらず、report.status に基づいて並べ替える必要があるため、クエリでエントリを並べ替える必要があります。ありがたいことに、レポート エンジンは結果を返す順序を尊重します。
表は次のとおりです。
entity_header
=================================================
entityID(pk) Location active name
1 LOCATION1 0 name1
2 LOCATION1 0 name2
3 LOCATION2 0 name3
4 LOCATION3 0 name4
5 LOCATION2 1 name5
6 LOCATION2 0 name6
report
========================================================
startdate entityID(fk) status reportID(pk)
03-10-2013 1 running 1
03-12-2013 2 running 2
03-10-2013 1 stopped 3
03-10-2013 3 stopped 4
03-12-2013 4 running 5
03-10-2013 5 stopped 6
03-12-2013 6 running 7
これまでに取得したクエリは次のとおりです。これは、ほとんど必要なものです。
SELECT entity_header.entityID
FROM entity_header eh
INNER JOIN report r on r.entityID = eh.entityID
WHERE r.startdate between getdate()-7.5 and getdate()
AND eh.active = 0
AND eh.location in ('LOCATION1','LOCATION2')
AND r.status is not null
AND eh.name is not null
GROUP BY eh.entityID, r.status, eh.name
ORDER BY r.status, eh.name;
このコミュニティが提供できるアドバイスをいただければ幸いです。必要な追加情報を提供できるよう最善を尽くします。