PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Колоната Postgres не съществува

Редактирано:цитираното изписване с главни букви унищожава заявката. В изхода на втория отказ по-долу можете да видите, че Postgres не харесва главните букви. Има навика да пише всичко с малки букви, освен ако не принудите с " цитати.

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

Бих помислил да се отърва от главните букви и кавичките. Просто ще предизвика главоболие. Като странична бележка, можете да напишете лявото присъединяване само веднъж чрез:

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

Също така можете да направите

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

във функция, за да се отървете от досадния излишък.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Надстройте PostgreSQL от 9.6 до 10.0 на Ubuntu 16.10

  2. Няколко области на подобрения в PostgreSQL 9.4

  3. 2 начина за добавяне на водещи нули в PostgreSQL

  4. Миграция на Rails:Bigint на PostgreSQL изглежда се проваля?

  5. postgresql:INSERT INTO ... (ИЗБЕРЕТЕ * ...)