-2

我使用以下 SQL 语句投影了几列:

SELECT DISTINCT ON ("TrainingMatrix".payroll, "TrainingName", "Institute")"gendata"."Employee Name","gendata"."Position", "gendata"."Department",  "TrainingMatrix".* "
            "FROM "TrainingMatrix" "
            "JOIN "gendata" ON "TrainingMatrix".payroll = "gendata".payroll "
            "ORDER  BY payroll, "TrainingName", "Institute" ,"TrainingDate" DESC NULLS LAST

我想根据"TrainingMatrix".payroll值过滤结果。我尝试了以下方法,但它显示错误:

SELECT *  (SELECT DISTINCT ON ("TrainingMatrix".payroll, "TrainingName", "Institute")"gendata"."Employee Name","gendata"."Position", "gendata"."Department",  "TrainingMatrix".* "
            "FROM "TrainingMatrix" "
            "JOIN "gendata" ON "TrainingMatrix".payroll = "gendata".payroll "
            "ORDER  BY payroll, "TrainingName", "Institute" ,"TrainingDate" DESC NULLS LAST) WEHRE "TrainingMatrix".payroll='40612010' ;"

我收到了这个错误:

ERROR: 42601: syntax error at or near "("

我正在使用 PostgreSQL。

编辑:

SELECT * from  (SELECT DISTINCT ON ("TrainingMatrix".payroll, "TrainingName", "Institute")"gendata"."Employee Name","gendata"."Position", "gendata"."Department",  "TrainingMatrix".* 

           FROM "TrainingMatrix" 
           JOIN "gendata" ON "TrainingMatrix".payroll = "gendata".payroll 
           ORDER  BY payroll, "TrainingName", "Institute" ,"TrainingDate" DESC NULLS LAST) where "TrainingMatrix".payroll='40612010' ;

现在我得到了:

错误:FROM 中的子查询必须有别名 LINE 1: SELECT * from (SELECT DISTINCT ON ("TrainingMatrix".payroll...

4

1 回答 1

1

你的子查询需要一个 from 并且你拼错了 WHERE。

编辑:并添加别名

SELECT * from (SELECT DISTINCT ON ("TrainingMatrix".payroll, "TrainingName", "Institute")"gendata"."Employee Name","gendata"."Position", "gendata"."Department",  "TrainingMatrix".* "
         ^^^^
            "FROM "TrainingMatrix" "
            "JOIN "gendata" ON "TrainingMatrix".payroll = "gendata".payroll "
            "ORDER  BY payroll, "TrainingName", "Institute" ,"TrainingDate" DESC NULLS LAST) a where "TrainingMatrix".payroll='40612010' ;"
                                                                                             ^ ^^^^^
于 2013-11-10T11:39:29.753 回答