Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用xml在子查询中使用TSQL Distinct_Sql Server_Stored Procedures_Sql Server 2012 - Fatal编程技术网

Sql server 使用xml在子查询中使用TSQL Distinct

Sql server 使用xml在子查询中使用TSQL Distinct,sql-server,stored-procedures,sql-server-2012,Sql Server,Stored Procedures,Sql Server 2012,我有以下表格结构: 表1-可能的区域/市场选择列表 Region | Market --------+---------------- EMEA | London NA | Omaha EMEA | Another City 表2-保留被选为影响的市场 RequestID | Market ------------+---------------- 123 | London 123 | Omaha 456 |

我有以下表格结构:

表1-可能的区域/市场选择列表

Region  |  Market
--------+----------------
EMEA    |  London
NA      |  Omaha
EMEA    |  Another City
表2-保留被选为影响的市场

RequestID   |  Market
------------+----------------
123         | London
123         | Omaha
456         | Another City
在我的存储过程中,我试图根据
表2
创建受影响的地区/市场的独特列表。最终结果将是一个独特的区域列表,其中包含所有受影响的市场

在这种情况下,
EMEA
地区有两种影响,但我不希望
EMEA
出现两次

当我在一个请求上执行此操作时,我能够创建一个临时表并将数据插入其中,然后完成我需要做的事情。然而,这是拉所有的结果,我需要在查询中这样做,我不知道如何

如果我没有从中获取不同的数据,那么这段代码可以正常工作。否则,将抛出错误:

由于xml数据类型不可比较,因此无法将其选择为独立数据类型

是否有其他方法可以在子查询/子选择中实现这一点

 ...
 (SELECT DISTINCT 
      region,
      (SELECT m.market
       FROM dbo.bs_ToolRequests_MarketOptions AS m
       INNER JOIN dbo.BS_ToolRequests_ImpactedMarkets AS ma ON ma.market = m.market
       WHERE m.region = mo.region
         AND ma.requestID = t.requestID
       FOR XML PATH ('options'), TYPE, ELEMENTS, ROOT ('markets'))
  FROM   
      dbo.BS_ToolRequests_MarketOptions AS mo
  FOR XML PATH ('regions'), TYPE, ELEMENTS, ROOT ('impactedMarkets')),
预期结果:

<impactedMarkets>
  <regions>
    <region>EMEA</region>
    <markets>
       <options>
         <market>London</market>
       </options>
       <options>
         <market>Another City</market>
       </options>
     </markets>
  </regions>
</impactedMarkets>

欧洲、中东和非洲
伦敦
另一个城市

可能需要在派生表的SELECT语句中使用DISTINCT关键字

 ...
 (SELECT region,
          (SELECT m.market
           FROM dbo.bs_ToolRequests_MarketOptions AS m
           INNER JOIN dbo.BS_ToolRequests_ImpactedMarkets AS ma ON ma.market = m.market
           WHERE m.region = mo.region
             AND ma.requestID = t.requestID
           FOR XML PATH ('options'), TYPE, ELEMENTS, ROOT ('markets'))
      FROM   
          (SELECT DISTINCT region FROM dbo.BS_ToolRequests_MarketOptions) AS mo
FOR XML PATH ('regions'), TYPE, ELEMENTS, ROOT ('impactedMarkets')),

可能需要在派生表的SELECT语句中使用DISTINCT关键字

 ...
 (SELECT region,
          (SELECT m.market
           FROM dbo.bs_ToolRequests_MarketOptions AS m
           INNER JOIN dbo.BS_ToolRequests_ImpactedMarkets AS ma ON ma.market = m.market
           WHERE m.region = mo.region
             AND ma.requestID = t.requestID
           FOR XML PATH ('options'), TYPE, ELEMENTS, ROOT ('markets'))
      FROM   
          (SELECT DISTINCT region FROM dbo.BS_ToolRequests_MarketOptions) AS mo
FOR XML PATH ('regions'), TYPE, ELEMENTS, ROOT ('impactedMarkets')),

由于您列出了表1中的城市而不是市场,表2是否应该是“地区”的?您是否可以显示您正在寻找的预期产出样本?由于您列出了表1中的城市而不是市场,表2是否应该是“地区”的?您是否可以显示您正在寻找的预期产出样本?