добавить новый столбец, если предыдущий не нулевой - PullRequest
0 голосов
/ 15 октября 2019

Мне нужно создать оператор sqlite, который проверяет, не является ли значение конкретного столбца ненулевым, затем добавить новый столбец и вставить новое значение.

У меня уже есть следующее:

CREATE TABLE "StuPayment" (
    "PayNumber" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    "StudentName"   ntext,
    "CourseName"    ntext,
    "PayDate"   datetime,
    "CheckNumber"   NUMERIC,
    "Amount"    NUMERIC
)

То, что я хочу создать, - это новые столбцы оплаты (PayDate1,CheckNumber1,Amount1), когда студент оплачивает стоимость курса двумя платежами или иногда тремя. Спасибо за ваше время, читая это.

Ответы [ 2 ]

1 голос
/ 15 октября 2019

Нет. Не делай этого. Просто запишите платежи в несколько рядов. У вас уже есть столбец datetime, поэтому каждый платеж регистрируется отдельно.

У новых строк есть несколько преимуществ:

  • Вы можете легко искать такие вещи, как amount > 1000 ине нужно беспокоиться о дополнительных столбцах.
  • Вы можете использовать индекс для поиска по столбцам платежей, например, для получения всех платежей в определенную дату.
  • PayNumber уникально идентифицирует каждый платеж.
  • Вам не нужно резервировать место для пустых значений во всех строках.
  • Добавить новые способы оплаты (например, кредитные карты, дебетовые карты, прямой дебет или другие механизмы) проще,потому что вам не нужно умножать столбцы для каждого потенциального платежа.
  • Вы можете легче поддерживать планы платежей, например, один платеж в неделю.

Ваша проблема в отношении 10 000 строк/ год не актуален в современном мире. Базы данных и компьютеры мощные.

Если вы хотите увидеть все платежи, которые сделал студент, вы можете использовать:

select studentname, coursename, count(*) as numpayments, sum(amount)
from stupayment
group by studentname, coursename;
0 голосов
/ 15 октября 2019

Я бы порекомендовал создать представление и выполнять любые манипуляции, которые вы хотите, поскольку я вижу неясное логическое требование. Перейти для просмотра Создание

   Create view as (Select * from table) ;
   Alter view add column c1 ;
...