尝试通过检查条件使用单个插入语句插入不同的结果集

时间:2011-07-14 20:49:46

标签: mysql sql tsql insert mysql-error-1064

我有一个winform,有四个文本框,两个下拉列表和一个Save按钮

文本框就像这些

  • 使用在文本框2011-03-02中输入的值启动文本框 (YYYY-MM-DD)

  • 在文本框中输入值的Enddate文本框2013-09-04(yyyy-mm-dd)

  • 截止日期文本框,在该文本框中输入的值为(2011-03-15)(15 2011年3月3日)

  • 在该文本框中输入值的amonut到期文本框为120.00。

  • paymentoption下拉列表,价值12个月现金,24个月 现金

  • 付费选项下拉列表,其中包含每年,每月的值

我有一张桌子

       paymentschedule 
     columns:         paymentscheduleid
                      datetobepaid
                      amountdue
                      paymentoption 

单击“保存”按钮时,值将保存在表格中,如下面的设置

如果“付费选项”是每月且结果集如下(付费选项是每月),这将是结果集

  paymentscheduleid      datetobepaid      amountdue      paymentoption

       1                   2011-04-15        120.00        12 months cash
       2                   2011-05-15        120.00        12 months cash
       3                   2011-06-15        120.00        12 months cash
       4                   2011-07-15        120.00        12 months cash
       -                       -              -                  -
       -                       -              -                  -
       -                       -              -                  -
       20                 2013-08-15        120.00         12 months cash

如果付费选项是年度,那么结果集将是这样的(付费选项是每年)

       paymentscheduleid      datetobepaid      amountdue      paymentoption

             1                  2011-04-15        120.00         12 month cash
             2                  2012-04-15        120.00         12 months cash
             3                  2013-04-15        120.00         12 months cash

datetobpaid取决于startdate和在截止日期文本框中输入的值

是否可以使用mysql和c#

使用单个insertstatement

任何人都可以帮助解决这个问题

非常感谢......

1 个答案:

答案 0 :(得分:1)

这完全在MS Sql上运行,您可以根据需要将其更改为Mysql:

declare @DueDate Datetime
declare @EndDate Datetime

declare @PaidOption varchar(10)
set @PaidOption='Monthly'

set @DueDate='2011-03-15'
set @EndDate='2013-09-04'


if @PaidOption='Monthly' -- for monthly
Begin
set @DueDate=DATEADD(month,+1,@DueDate)
WHILE @DueDate<@EndDate
BEGIN  
--insert statement use @duedate for datetobepaid and other values are as you input
  set @DueDate=DATEADD(month,+1,@DueDate)

END
End
Else -- for yearly
Begin
set @DueDate=DATEADD(Year,+1,@DueDate)
WHILE @DueDate<@EndDate
BEGIN  
--insert statement use @duedate for datetobepaid and other values are as you input
  set @DueDate=DATEADD(year,+1,@DueDate)

END
End

此处Paidoption和其他字段是静态设置的。虽然您可以将它用作输入参数

希望这可以解决你的问题