2011-01-19 88 views
1

如何将此SQL查询转换为Perl DBIx::Class代码?如何使用COUNT,SUM,CASE和BETWEEN将此SQL查询转换为Perl DBIx :: Class?

SELECT COUNT(*) AS num_grads, 
     SUM(CASE WHEN employment_status = 1 THEN 1 ELSE 0 END) AS num_employed 
    FROM students 
WHERE status = 6 -- 6 means they graduated 
    AND grad_date BETWEEN Convert(datetime, ?) AND Convert(datetime, ?) 
+1

你的意思是DBIx :: Class? – 2011-01-19 16:53:11

+0

是的,DBIx :: Class。 – Justin 2011-01-19 21:48:23

回答

1

假设你的意思DBIx ::类,那么我可能会去的东西,如:

my $rs = My::Schema->resultset('Students') # 
    ->search({ 
     status => 6, 
     grad_date => { 'between' => [ $start_dt, $end_dt ] }, 
    }); 

my $num_grads = $rs->count(); 
my $num_employed = $rs->search({ employment_status => 1 })->count(); 

当然的日期时间位将取决于你的日期时间格式,无论你是自动充气/缩减日期时间等