很抱歉问这个问题,我确定这已经回答了其他地方,但我什至不知道什么关键字或如何正确解释它...所以...我有连接到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 Brian Welcker
工具设计器
13 Janice Galvin
12 Thierry d'Hers
如
JobTitle
BusinessentityId firstName lastname ...
只能在Perl中获得此RE订单吗?不使用/更改查询?
谢谢,r。
由于查询正在返回用作业标题排序的数据,因此您要做的就是跟踪以前的作业标题是什么像以下代码段这样的新职位标题演示。
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";
}
我确定有人可以给您一个很酷的嵌套SQL命令来执行此操作,但是我是SQL程序员之前的Perl编程。因此,如果您不必担心SQL性能,则应查询DB的所有不同作业标题(除非您已经知道它们(,然后再循环浏览标题(foreach my $title (@jobTitles)
(,打印出标题,然后打印出所有标题匹配该标题的记录(WHERE JobTitle=$title
类型的东西(。