【发布时间】:2014-06-21 14:49:49
【问题描述】:
RDBMS 是 SQL Server 2008。
我有 3 张桌子。为了简化,它们看起来像这样:
NominationOrder表:
NominationOrderId | NominationId
1 | 5
2 | 9
NominationOrderItem表:
NominationOrderItemId | NominationOrderId | GiftId
1 | 1 | 6
2 | 1 | 3
3 | 1 | 9
Gift表:
GiftId | GiftName |
3 | TVSet
6 | TabletPC
9 | LittlePonny
所以,有一些Nomination。每个Nomination 可能有1 个Nomination Order。每个Nomination Order 可能有很多Nomination Order Items,每个Gift 从这个顺序中引用。
我正在为 Reporting Services 制作报告,我需要在单行中显示每个提名的数据,其中 Gift 显示串联的 Gift 名称。
目前看起来是这样的:
NominationId | NominationOrderId | GiftName
5 | 1 | TVSet
5 | 1 | TabletPC
5 | 1 | LittlePonny
我需要它看起来像这样:
NominationId | NominationOrderId | GiftName
5 | 1 | TVSet, TabletPC, LittlePonny
当前 SQL 查询的简化示例:
select
nn.NominationId
,n_o.NominationOrderId
,g.name GiftName
from dbo.Nomination nn
LEFT JOIN dbo.NominationOrder n_o ON n_o.NominationId = nn.NominationId
LEFT JOIN dbo.NominationOrderItem noi ON noi.NominationOrderId = n_o.NominationOrderId
left join dbo.Gift g on g.GiftId = noi.GiftId
如何重写它以在单个字符串中输出并连接礼物名称?
【问题讨论】:
-
你使用的是什么关系型数据库?
-
@Mureinik,这是 MSSQL 2008,谢谢通知!
-
第四张桌子在哪里?
Nomination? -
每个
NominationId可以送多少礼物?
标签: sql sql-server sql-server-2008 concatenation