SQL在执行内部联接时删除重复的标头

SQL在执行内部联接时删除重复的标头,sql,sql-server,sql-server-2014,Sql,Sql Server,Sql Server 2014,我正在尝试删除查询的重复标题 这是我的问题 Select po.BranchOrderNumber,pod.ItemCode, pod.ItemDescription From RetailPosOrders po INNER JOIN RetailPosOrderDetails pod ON po.BranchOrderID = pod.OrderID 我的查询结果现在看起来是这样的 现在我想要的是这样的东西 提前谢谢。我计划在报表生成器上使用此功能。。我正在使用Microsoft

我正在尝试删除查询的重复标题

这是我的问题

Select  po.BranchOrderNumber,pod.ItemCode, pod.ItemDescription From  RetailPosOrders po 
INNER JOIN RetailPosOrderDetails pod
ON po.BranchOrderID = pod.OrderID
我的查询结果现在看起来是这样的

现在我想要的是这样的东西


提前谢谢。我计划在
报表生成器上使用此功能。。我正在使用Microsoft Sql Server 2014。

Mssql Server本身无法做到这一点


我认为如果要使用console/win/web应用程序来显示它,就必须在应用程序级别进行

在Mssql服务器本身中无法做到这一点


我认为如果要使用console/win/web应用程序来显示它,就必须在应用程序级别进行

这是最好在应用程序级别完成的转换类型。这在SQL中是可能的,但请记住SQL查询和结果集(默认情况下)是无序的。您想要的结果有一个顺序

但是,您可以使用
行编号()

这假设
po.BranchOrderNumber
——不管它的名称如何——都存储为字符串(前导的零表示情况就是这样)

此外,还有两件重要的事情:

  • 外部
    orderby
    需要与
    over
    子句中使用的字段相同
  • 字段需要唯一地定义结果集中的每一行。SQL中的
order by不稳定,这意味着具有相同值的键可以以任何顺序出现,即使对于同一查询的不同运行也是如此
这是最好在应用程序级别完成的转换类型。这在SQL中是可能的,但请记住SQL查询和结果集(默认情况下)是无序的。您想要的结果有一个顺序

但是,您可以使用
行编号()

这假设
po.BranchOrderNumber
——不管它的名称如何——都存储为字符串(前导的零表示情况就是这样)

此外,还有两件重要的事情:

  • 外部
    orderby
    需要与
    over
    子句中使用的字段相同
  • 字段需要唯一地定义结果集中的每一行。SQL中的order by不稳定,这意味着具有相同值的键可以以任何顺序出现,即使对于同一查询的不同运行也是如此

如果要使用应用程序显示,我认为必须在应用程序级别执行此操作。我不认为尝试在查询中执行此操作是一个好主意。它应该在报告级别进行管理。@回溯是的,如果它只在应用程序层中,我永远不会这样做。。。但是我使用的是
microsoft report builder
,我不知道如何操作那里的数据集。我认为如果要使用应用程序显示数据集,必须在应用程序级别执行。我不认为在查询中执行此操作是一个好主意。它应该在报告级别进行管理。@回溯是的,如果它只在应用程序层中,我永远不会这样做。。。但是我使用的是
microsoft report builder
,我不知道如何操作那里的数据集。确定有一种方法可以在服务器上实现这一点-大多数需求都可以在sql上实现,只是有时候这不是一个好的解决方案。确定有一种方法可以在服务器上实现这一点-大多数需求都可以在sql上实现,只是有时候这不是个好办法。
Select (case when row_number() over (partition by po.BranchOrderNumber order by pod.ItemCode) = 1
             then po.BranchOrderNumber else ''
        end) as BranchOrderNumber
       pod.ItemCode, pod.ItemDescription
From RetailPosOrders po INNER JOIN
     RetailPosOrderDetails pod
     ON po.BranchOrderID = pod.OrderID
Order by po.BranchOrderNumber, pod.ItemCode;