我没有使用此查询得到明确的记录

时间:2017-02-21 15:45:55

标签: sql postgresql

 select distinct
 (mc."Member Id"),
mc."Member Last Name",
mc."Member Middle Name",
mc."Member First Name",

mc."Member DOB",
mc."Claim DOS",
mwc."Later Visit Date",
mc."Service Paid/Denied",
mc."Claim Number",
mc."Facility Name",
mc."Facility Id",
mc."Facility Address",
mc."Facility Phone Number",
mc."Facility Fax",

mc."Provider Name",
mc."Provider Id"
from member_cdt mc  inner join member_withoutcdt mwc ON mc."Member Id" = mwc."Member Id" 
where mc."Claim DOS" <>  mwc."Later Visit Date"
order by 1

1 个答案:

答案 0 :(得分:2)

您正在寻找distinct on,而不是select distinct

select distinct on (mc."Member Id") mc."Member Id", . . .
from member_cdt mc inner join
     member_withoutcdt mwc
     on mc."Member Id" = mwc."Member Id" 
where mc."Claim DOS" <>  mwc."Later Visit Date"
order by mc."Member Id";

此语法(特定于Postgres)为括号中的每组键值返回一行。该行的内容是括号后面的列。

注意:

  • distinct on的结束时间后没有逗号。
  • mc."Member Id"后面都在括号中和列列表中。第一个引用用于选择唯一行;第二个是返回值。
  • 通常情况下,还有一个order by密钥用于指定所需的重复记录