0

関連する投稿について熟考しましたが、成功することはできません。クライアントへの最後のメモを示すレポートが必要です。私は本当に近いですが、クエリは実際の最後のエントリを定期的に「見逃しています」。過去 6 か月の最後のエントリを表示するレポートを実行すると、"bob" の最後のエントリが 8/1/13 として表示されるとします。表を見てみると10/23/13のメモがあります。どういうわけかデータがめちゃくちゃになっていないかどうかを確認しましたが、問題ないようです。クエリに実際の最新のものではなく、「ほぼ最後のメモ」が多数ある理由を誰かが明らかにすることができれば、非常に感謝しています。これは、それを説明するコメントとともに使用したクエリです。

SELECT  
DISTINCT ON (c.client_id) --the client id
g.name, -- the office location
MAX (n.date_service),
n.date_creation, 
sv.code, -- the service / activity code
c.name_lastfirst_cs, -- client's name
n.date_service,  
s.staff_id -- staff id
FROM  notes n, clients c, services sv,  staff s, groups g
WHERE n.zrud_service = sv.zzud_service
AND n.visibility_flag = '1' -- 1 = valid note
AND n.zrud_client = c.zzud_client
AND n.zrud_staff = s.zzud_staff
AND n.zrud_group = g.zzud_group
AND g.name = 'HALIFAX' -- am specifying a single location

-- the next 4 lines were an attempt to query specific time range and actitity codes
--AND s.code IN ('10101', '10102', '10201',     10202','10203','10204','10205','10401','10402','10403','10405')
-- AND n.date_service >= '1/1/2010'
-- AND n.date_service<= '11/7/2013'
-- AND n.date_service BETWEEN (now() - '800 days'::interval)::timestamp AND now() 

GROUP BY g.name,sv.code, c.client_id, c.name_lastfirst_cs, s.staff_id,
n.date_service, n.date_creation
4

1 に答える 1

1

some_dateテーブルに基づく最後のエントリが必要な場合は、 DISTINCT ONwith を一緒に使用するORDER BY some_date DESCのが適切なオプションです。

SELECT  
DISTINCT ON (c.client_id) --the client id
g.name, -- the office location
n.date_service,
n.date_creation, 
sv.code, -- the service / activity code
c.name_lastfirst_cs, -- client's name
n.date_service,  
s.staff_id -- staff id
FROM  notes n, clients c, services sv,  staff s, groups g
WHERE n.zrud_service = sv.zzud_service
AND n.visibility_flag = '1' -- 1 = valid note
AND n.zrud_client = c.zzud_client
AND n.zrud_staff = s.zzud_staff
AND n.zrud_group = g.zzud_group
AND g.name = 'HALIFAX' -- am specifying a single location
ORDER BY c.client_id, n.date_service DESC;

の必要がないことに注意してくださいGROUP BYMAXグループDISTINCT ON化とORDER BY最後のエントリのみの取得を処理します。

于 2013-11-06T13:37:55.557 に答える