如果前一个不为null,则添加新列

时间:2019-10-15 14:49:47

标签: c# sql sqlite insert alter

我需要创建sqlite语句来检查特定列的值是否不为null,然后添加新列并插入新值。

我已经有了这个:

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 个答案:

答案 0 :(得分:1)

不。不要这样只需将付款记录为多行即可。您已经有一个datetime列,因此每笔付款都单独记录。

新行有多个优点:

  • 您可以轻松搜索诸如amount > 1000之类的内容,而不必担心多余的列。
  • 您可以使用索引来搜索付款列,例如在特定日期获取所有付款。
  • PayNumber唯一标识每笔付款。
  • 您不必为所有行中的空值保留空间。
  • 添加新的付款方式(例如信用卡,借记卡,直接付款或其他机制)更加简单,因为您不必为每次潜在的付款都增加列。
  • 您可以更轻松地支持付款计划,例如每周一次付款。

您对每年10,000行的关注与当今世界无关。数据库和计算机功能强大。

如果要查看学生已支付的所有款项,可以使用:

select studentname, coursename, count(*) as numpayments, sum(amount)
from stupayment
group by studentname, coursename;

答案 1 :(得分:0)

我建议创建一个视图并执行所需的任何操作,因为我看到逻辑需求不清楚。进入视图创建

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