【问题标题】:Resultset with pivot table as sub query - MSSQL以数据透视表作为子查询的结果集 - MSSQL
【发布时间】:2016-11-20 12:26:32
【问题描述】:

我有两个具有以下结构的表。

我想从一个查询中得到这样的结果。

CUSTOMER_CODE |客户名称 |第 1 行 |第 2 行 |第 3 行

我们必须将第一个表作为枢轴,但如何不确定。 请指教。 谢谢

【问题讨论】:

  • 你有什么尝试吗?即使查询有误,您也可以发布查询
  • 线条如何连接到第二个结果集?只是随机顺序?
  • 实际上我正在了解如何开始。我不擅长数据库,但我只是得到一个线索,我们需要将第一个表转换为枢轴,以便它的行可以在列中转换。休息我不知道怎么做。
  • 您想要的结果是什么?为什么第二个表一遍又一遍地重复相同的行?为什么输出有两次Line 1?你的问题不清楚。
  • @GordonLinoff 我刚刚更新了第二张桌子。行不重复,这是一些随机查询的结果。我已经更改了图像。

标签: sql sql-server database sql-server-2008 pivot-table


【解决方案1】:

这里是动态条件聚合 没有表名,所以 TABLE1 与 Image1 相关

Declare @SQL varchar(max)=''
Select @SQL = @SQL+',[Line '+cast([Line#] as varchar(25))+']=max(case when [Line#]='+cast([Line#] as varchar(25))+' then EMail else '''' end)'
 From (Select Distinct [Line#] from Table1) A
 Order By [Line#] 

Select @SQL='
Select A.Customer_Code
      ,B.Customer_Branch_Name'+@SQL+' 
 From  Table1 A 
 Join  Table2 B 
   on  A.Customer_Code=B.Customer_Branch 
 Group By A.Customer_Code,B.Customer_Branch_Name'
Exec(@SQL)

返回

【讨论】:

  • 谢谢约翰。您的查询看起来很有希望,因为它返回了我需要的确切数据。实际上我需要使用 Link Sever 来运行这个查询。我根据我的服务器和表名对其进行了编辑,但出现语法错误。请在dl.dropboxusercontent.com/u/37107813/query.txt 找到我的查询,因为由于评论框长度限制,我无法在此处跳过我的查询。
  • @Ans 您可能必须将整个 sql 包装在一个 openquery() 或链接服务器上的存储过程中检查 blog.falafel.com/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
相关资源
最近更新 更多