PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Kolom Postgres tidak ada

Diedit:Kapitalisasi yang dikutip mengurangi kueri. Pada output dari kegagalan kedua di bawah ini Anda dapat melihat Postgres tidak menyukai huruf besar. Ia memiliki kebiasaan membuat huruf kecil semuanya kecuali jika Anda memaksa dengan " kutipan.

--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;

Saya akan berpikir untuk menghilangkan huruf besar dan tanda kutip. Itu hanya akan menyebabkan sakit kepala. Sebagai catatan tambahan, Anda bisa menulis join kiri sekali saja dengan cara:

-- 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 ...

Anda juga bisa membuat

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",

menjadi fungsi untuk menghilangkan redundansi yang membosankan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Indeks Sebagian tidak digunakan dalam klausa ON CONFLICT saat melakukan upsert di Postgresql

  2. PostgreSQL - Ganti Entitas HTML

  3. Membandingkan Opsi Cloud Database untuk PostgreSQL

  4. Bagaimana saya bisa membuat batasan untuk memeriksa apakah email valid di postgres?

  5. Bisakah saya menulis fungsi PostgreSQL di Ruby on Rails?