PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cột postgres không tồn tại

Đã chỉnh sửa:Viết hoa được trích dẫn đang làm tan truy vấn. Trong đầu ra của lỗi thứ hai bên dưới, bạn có thể thấy Postgres không thích chữ hoa. Nó có tất cả mọi thứ là viết thường trừ khi bạn ép buộc bằng " dấu ngoặc kép.

--fails
select a
from
(select 1 as "A") as t;

--fails
select A
from
(select 1 as "A") as t;

--works
select "A"
from
(select 1 as "A") as t;

psql:new.sql:5: ERROR:  column "a" does not exist
LINE 1: select a
               ^
psql:new.sql:10: ERROR:  column "a" does not exist
LINE 1: select A
               ^
 A 
───
 1
(1 row)


select ...
timeloggedToday.date_logged "DATE_LOGGED_TODAY",
-- should be: timeloggedToday."DATE_LOGGED" "DATE_LOGGED_TODAY",

...

LEFT JOIN
  (SELECT app_user.lower_user_name,
          to_char(startdate, '%Y-%m-%d') AS "DATE_LOGGED",
          Sum(timeworked) / 3600 "TIME_IN_HOURS",
          startdate - Now() "DIFFERENCE_DAYS"
   ...
  ) timeloggedToday ON timeloggedToday.lower_user_name = users.author;

Tôi sẽ nghĩ về việc loại bỏ viết hoa và dấu ngoặc kép. Nó chỉ gây ra đau đầu. Lưu ý thêm, bạn có thể viết phép nối bên trái chỉ một lần bằng cách:

-- instead of enumerating each possible interval  
WHERE to_char(Now() - INTERVAL '8 days', '%Y-%m-%d') < to_char(startdate, '%Y-%m-%d')
-- select the interval
now()::date - start_date as diff
-- then build up your columns like:
case(case when diff=0 then date_logged else null end) as date_logged_today
case(case when diff=1 then date_logged else null end) as date_logged_yesterday
-- and so on ...

Ngoài ra, bạn có thể thực hiện

CASE
   WHEN Ifnull(timeloggedToday.time_in_hours, 0) = 0 THEN 'No Time Logged'
   WHEN timeloggedToday.time_in_hours < 3.0 THEN 'User has not logged sufficient time' 
   ELSE 'user has logged sufficient time'
 END "STATUS_TODAY",

thành một chức năng để loại bỏ sự dư thừa tẻ nhạt.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để đặt lại mật khẩu người dùng mặc định postgresql 9.2 (thường là 'postgres') trên mac os x 10.8.2?

  2. Cách thoát ký tự dấu chấm hỏi (?) Với Spring JpaRepository

  3. Mẫu &Công cụ sửa đổi mẫu cho Định dạng số trong PostgreSQL

  4. Docker - Làm cách nào để chạy lệnh psql trong vùng chứa postgres?

  5. Làm cách nào để xuất bảng dưới dạng CSV với các tiêu đề trên Postgresql?