SQL 进行内连接时删除重复项 header
SQL Remove Duplicate header when doing inner join
我正在尝试删除重复的 Header 我的查询...
here's my query
Select po.BranchOrderNumber,pod.ItemCode, pod.ItemDescription From RetailPosOrders po
INNER JOIN RetailPosOrderDetails pod
ON po.BranchOrderID = pod.OrderID
我的查询结果现在看起来像这样。
现在我想要的是这样的。
提前致谢。我打算在 Report builder
上使用它。我正在使用 Microsoft Sql Server 2014。
Mssql server 本身无法做到这一点。
我认为如果要使用控制台/win/web 应用程序显示它,则必须在应用程序级别执行此操作。
这是最好在应用程序级别完成的转换类型。在 SQL 中是可能的,但请记住 SQL 查询和结果集——默认情况下——是无序的。您想要的结果有一个排序。
但是,您可以使用 row_number()
:
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;
这假设 po.BranchOrderNumber
——尽管它的名字——被存储为一个字符串(前导零表明是这种情况)。
此外,还有几件重要的事情:
- 外部
order by
需要与 over
子句中使用的字段相同。
- 字段需要唯一定义结果集中的每一行。 SQL 中的
order by
不稳定,这意味着具有相同值的键可以以任何顺序出现,即使对于同一查询的不同运行也是如此。
我正在尝试删除重复的 Header 我的查询...
here's my query
Select po.BranchOrderNumber,pod.ItemCode, pod.ItemDescription From RetailPosOrders po
INNER JOIN RetailPosOrderDetails pod
ON po.BranchOrderID = pod.OrderID
我的查询结果现在看起来像这样。
现在我想要的是这样的。
提前致谢。我打算在 Report builder
上使用它。我正在使用 Microsoft Sql Server 2014。
Mssql server 本身无法做到这一点。
我认为如果要使用控制台/win/web 应用程序显示它,则必须在应用程序级别执行此操作。
这是最好在应用程序级别完成的转换类型。在 SQL 中是可能的,但请记住 SQL 查询和结果集——默认情况下——是无序的。您想要的结果有一个排序。
但是,您可以使用 row_number()
:
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;
这假设 po.BranchOrderNumber
——尽管它的名字——被存储为一个字符串(前导零表明是这种情况)。
此外,还有几件重要的事情:
- 外部
order by
需要与over
子句中使用的字段相同。 - 字段需要唯一定义结果集中的每一行。 SQL 中的
order by
不稳定,这意味着具有相同值的键可以以任何顺序出现,即使对于同一查询的不同运行也是如此。