Sql server 使用xml在子查询中使用TSQL Distinct
我有以下表格结构: 表1-可能的区域/市场选择列表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 |
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是否应该是“地区”的?您是否可以显示您正在寻找的预期产出样本?