呵呵又是MySQL转PostgreSQL的问题
这次是Group by得问题了
MySQL的Group by 后面分组的列不一定要和查询的列一致
但是PostgreSQL的Group by是必须一致的
这是原来
SELECT u.UserCD ,SUBSTRING(OperationDT,9,2) AS DateDay
FROM mytable
GROUP BY SUBSTRING(OperationDT,1,10)
这句的意思是我想分组SUBSTRING之后的值 MySQL中不会出错的可是在PostgreSQL中 由于我查询中要查SUBSTRING(OperationDT,9,2) AS DateDay
所以GROUP BY中必须要写OperationDT 这样就不是我想要的结果了
顺便说下OperationDT是时间 YYYY-MM-DD hh:mmss格式的最好有简单的方法 SQL文别改太长
这次是Group by得问题了
MySQL的Group by 后面分组的列不一定要和查询的列一致
但是PostgreSQL的Group by是必须一致的
这是原来
SELECT u.UserCD ,SUBSTRING(OperationDT,9,2) AS DateDay
FROM mytable
GROUP BY SUBSTRING(OperationDT,1,10)
这句的意思是我想分组SUBSTRING之后的值 MySQL中不会出错的可是在PostgreSQL中 由于我查询中要查SUBSTRING(OperationDT,9,2) AS DateDay
所以GROUP BY中必须要写OperationDT 这样就不是我想要的结果了
顺便说下OperationDT是时间 YYYY-MM-DD hh:mmss格式的最好有简单的方法 SQL文别改太长
不是标准的 SQL语句SELECT u.UserCD ,to_char(OperationDT,'YYYY-MM-DD') AS DateDay
FROM mytable
GROUP BY u.UserCD ,to_char(OperationDT,'YYYY-MM-DD')
FROM mytable
GROUP BY u.UserCD,SUBSTRING(OperationDT,1,10)加上 u.UserCD,或者SELECT min(u.UserCD) ,SUBSTRING(OperationDT,9,2) AS DateDay
FROM mytable
GROUP BY SUBSTRING(OperationDT,1,10)
在GROUP BY 中就必须要有OperationDT 错误提示就是这样的 我的版本是8.4的
FROM mytable
GROUP BY u.UserCD ,to_char(OperationDT, 'YYYY-MM-DD ')
select UserCD,to_char(OperationDT, 'DD') As DateDay from daily_reports
GROUP BY UserCD,to_char(OperationDT, 'YYYY-MM-DD')错误如下
ERROR: 列"daily_reports.operationdt"はGROUP BY句で出現しなければならないか、集約関数内で使用しなければなりません
LINE 1: select UserCD,to_char(OperationDT, 'DD') As DateDay from dai...
********** エラー **********
ERROR: 列"daily_reports.operationdt"はGROUP BY句で出現しなければならないか、集約関数内で使用しなければなりません
SQLステート:42803
文字:23意思就是operationdt是必需的,这么写就没错了 但是不是我要的结果了
select UserCD,to_char(OperationDT, 'DD') As DateDay from daily_reports
GROUP BY UserCD,to_char(OperationDT, 'YYYY-MM-DD'),OperationDT
select UserCD,to_char(OperationDT, 'DD') As DateDay from daily_reports
GROUP BY UserCD,to_char(OperationDT, 'YYYY-MM-DD')select UserCD,to_char(OperationDT, 'DD') As DateDay from daily_reports
GROUP BY UserCD,to_char(OperationDT, 'YYYY-MM-DD'),OperationDTTRY:
select usercd,DATE_PART('DAY',TO_DATE(DateDay,'YYYY-MM-DD'))
from (
select UserCD,to_char(OperationDT, 'YYY-MM-DD') As DateDay from daily_reports
GROUP BY UserCD,to_char(OperationDT, 'YYYY-MM-DD'),OperationDT) a
那假如 select后面还有其他字段 但是不想GROUP BY 他们 怎么办
select UserCD,to_char(OperationDT, 'DD') As DateDay,Memo,Message from daily_reports
GROUP BY UserCD,to_char(OperationDT, 'YYYY-MM-DD'),OperationDT