perl / sql server查询“重新排序”

时间:2018-02-26 16:22:22

标签: sql-server perl reorderlist

很抱歉提出这个问题,我确信这已经在其他地方得到了解答,但我甚至不知道哪些关键字或如何正确解释... 所以......我有这个连接到sql server的perl代码..

my $user = '';
my $pass = '.';
my $connection = "dbi:Sybase:server=;database=Adventure";
my $dbh_SQL = DBI->connect($connection, $user, $pass) or die 'Cannot connect';
my $query_cust_main = "
SELECT BusinessEntityID,
       Title,
       FirstName,
       LastName,
       Suffix,
       JobTitle

FROM HumanResources.vEmployee
order by JobTitle";

my $query_cust_sth = $dbh_SQL->prepare($query_cust_main);
$query_cust_sth->execute();
my $all_cust = $dbh_SQL->selectall_arrayref($query_cust_main, {Slice => {}});

foreach my $data (@$all_cust){
print $data->{BusinessEntityID}." ".$data->{FirstName}." ".$data->{LastName}." ".$data->{JobTitle}."\n";
}

此代码打印: 12 Thierry D'Hers工具设计师 13 Janice Galvin工具设计师 2 Terri Duffy工程副总裁 25詹姆斯汉密尔顿生产副总裁 273 Brian Welcker销售副总裁

现在,我想做什么......不知何故是重新排序结果:

生产副总裁

25 James Hamilton

273 Brian Welcker

工具设计师

13 Janice Galvin

12 Thierry D'Hers

JobTitle

BusinessEntityID FirstName LastName ...

是否可以仅在perl中获得此重新订单?不使用/改变查询?

谢谢你, R上。

1 个答案:

答案 0 :(得分:1)

由于查询返回按作业标题排序的数据,您所要做的就是跟踪上一个作业标题是什么以及何时与当前作业标题不同,打印出一个新的作业标题标题,如此代码摘录演示。

my $last_job_title;
foreach my $data (@$all_cust) {
    if($last_job_title ne $data->{JobTitle}) {
        $last_job_title = $data->{JobTitle};
        print $data->{JobTitle},"\n";
    }
    print $data->{BusinessEntityID}." ".$data->{FirstName}." ".$data->{LastName}."\n";
}