交叉应用VS STUFF功能

时间:2014-03-13 04:16:27

标签: sql sql-server cross-apply

我在SQL Server中搜索GROUP_CONCAT等效函数,我发现这两个选项是CROSS APPLYSTUFF。因为我希望concatenate使用连接在计划表中sday字段的那一天。这是我的数据库架构,请参考下面的照片。那么这个更好的方法是什么?

doctor schema schedule schema

我尝试了STUFF这样的功能,我得到了重复的记录:

enter image description here

2 个答案:

答案 0 :(得分:3)

连接查询中的值没有问题。你可以看到它正确地带回了结果。另请注意,连接不是STUFF(),而是FOR XML PATH('')

由于您在doctorschedule之间进行内部联接,因此您获得了重复记录。其中一位医生的日程安排有4条记录。具体而言,列start_timeend_timesstatus是问题所在。您可能无法对它们进行分组,因为每个日程表的值都可能不同。

Tyou可以:

  • 不会在查询中返回这些列,
  • 或连接这些列。

答案 1 :(得分:0)

您可能希望在MSDN上看到Group Concat函数的以下线程 http://social.msdn.microsoft.com/Forums/sqlserver/en-US/f09d4166-2030-41fe-b86e-392fbc94db53/tsql-equivalent-for-groupconcat-function?forum=transactsql

这四个条目是由于日程表必须在星期一,星期二,星期三和星期四有四个条目。检查您已应用的内部联接。