sql-server - 连接多个表中的多行

标签 sql-server sql-server-2008 t-sql coalesce

我已查看many other在这里发表了帖子,并且已经非常熟悉 Coalesce 函数,但我一直无法弄清楚如何执行此特定任务。

因此,我有一个佣金表和一个类别表。我创建了一个gist here这样您就可以通过一些示例数据看到确切的数据结构。基本上,Commission 表具有 SalesRepID、LocationID、CategoryID、SurgeonID 和 CommissionPercent 列。

Using a Coalesce function ,我已经能够通过传入 SalesRepID、LocationID 和 SurgeonID 来获得类似的信息:

.05 (Shirts), .05 (Shoes), .05 (Dresses), .10 (Hats), .15 (Pants)

但是,我试图让它看起来像:

.05 (Shirts, Shoes, Dresses), .10 (Hats), .15 (Pants)

我确实用 STUFF 尝试了几次,但从未得到我想要的结果。

这让我想问这在 MsSQL 2008 R2 中是否可能?如果是的话,任何帮助我获得我正在寻找的结果的帮助都将不胜感激。

非常感谢您的时间和精力,

安德鲁

最佳答案

谢谢你的要点!比拔牙来获取模式和数据要好得多。 :-) 如果您将其插入到您的要点查询中,您应该会看到您想要的结果(嗯,非常接近 - 见下文)。

DECLARE @SalesRepID int = 2, 
        @SurgeonID  int = 1, 
        @LocationID int = 1;

;WITH x AS 
(
  SELECT CommissionPercent, Categories = STUFF((SELECT N', ' 
      + tCat.Category FROM #tCategories AS tCat 
      INNER JOIN #tCommissions AS tCom 
      ON tCat.CategoryID = tCom.CategoryID
      WHERE tCom.CommissionPercent = com.CommissionPercent
      FOR XML PATH, 
      TYPE).value(N'./text()[1]', N'nvarchar(max)'), 1, 2, N'') 
 FROM #tCommissions AS com
 WHERE SalesRepID = @SalesRepID
   AND SurgeonID  = @SurgeonID
   AND LocationID = @LocationID
),
y AS
(
  SELECT s = RTRIM(CommissionPercent) + N' (' + Categories + N')' 
  FROM x GROUP BY CommissionPercent, Categories
)
SELECT Result = STUFF((SELECT N', ' + s FROM y 
  FOR XML PATH, 
  TYPE).value(N'./text()[1]', N'nvarchar(max)'), 1, 2, N'');

结果与您要求的略有不同,但您可以通过在拉取 CommissionPercent 时应用字符串格式来解决该问题。

Result
--------------------------------------------------------
0.05 (Shirts, Shoes, Dresses), 0.10 (Hats), 0.15 (Pants)

关于sql-server - 连接多个表中的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10405362/

相关文章:

sql-server - 使用 DATENAME 时的 SQL SET DATEFIRST

sql-server - 使用滚动小计和百分比进行查询

sql-server - Azure SQL 数据仓库表中的分区数据

c# - 如何设置SqlDependency来监控多个表

sql-server - Select 子句中的 bool 逻辑

.net - SQL Azure 上的全文搜索

c# - Microsoft.SqlServer.Management.Smo 获取 SQL Server 的恢复模型

sql-server - SSIS - 控制发送到 SSIS 目录的错误日志

sql - "if, else"计算语句出现问题

sql - 表中列的位置