Sql server perl/sql server查询“;“重新订购”;

Sql server perl/sql server查询“;“重新订购”;,sql-server,perl,reorderlist,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

很抱歉问这个问题,我相信这已经在其他地方得到了回答,但我甚至不知道什么关键词或如何正确解释它。。。 所以我有这个连接到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詹姆斯·汉密尔顿

273布莱恩·韦尔克

工具设计器

13詹妮斯·高尔文

12蒂埃里·德赫斯

职位名称

BusinessEntityID FirstName LastName

是否可以仅在perl中获得此重新排序?不使用/更改查询

谢谢,,
R.

我相信有人可以给你一个很酷的嵌套SQL命令来完成这项工作,但我在SQL程序员之前是一个Perl编程人员。因此,如果您不必担心SQL性能,您应该查询数据库中所有不同的职务名称(除非您已经知道),然后循环浏览这些名称(
foreach my$title(@jobTitles)
),打印出标题,然后打印出与该标题匹配的所有记录(
其中JobTitle=$title
之类的内容).

由于查询返回的是按职务排序的数据,所以您所要做的就是跟踪上一个职务是什么,当它与当前职务不同时,打印出一个新的职务标题,如下面的代码片段所示

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";
}