Sql server SQL-从另一个表获取值
对象资源表:Sql server SQL-从另一个表获取值,sql-server,Sql Server,对象资源表: ObjectID|Resource 01 | Resource A 01 | Resource B 对象可用性表: AvailID|DayName 01 | Monday 02 | Tuesday ObjectID|Resource Name|Day 01 |ResourceA | 01 ObjectResourceAvailability表: AvailID|DayName 01 | Monday 02
ObjectID|Resource
01 | Resource A
01 | Resource B
对象可用性表:
AvailID|DayName
01 | Monday
02 | Tuesday
ObjectID|Resource Name|Day
01 |ResourceA | 01
ObjectResourceAvailability表:
AvailID|DayName
01 | Monday
02 | Tuesday
ObjectID|Resource Name|Day
01 |ResourceA | 01
理想情况下,它应该显示
ObjectID|Resource Name|DayName
01 |ResourceA, ResourceB | Monday, Tuesday
我还连接了具有相同ID的列。
如何使最终结果显示为周一而不是01?我已尝试选择ObjAvail.DayName并更改连接字符串解决方案,但在select列表中,我始终得到无效列,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中
这是帮助我实现连接列的解决方案
SELECT
t1.oid
,STUFF(
(SELECT
', ' + t2.resource
FROM objectresource t2
WHERE t1.oid=t2.oid
ORDER BY t2.resource
FOR XML PATH(''), TYPE
).value('.','varchar(max)')
,1,2, ''
) AS Resources
,STUFF(
(
SELECT
',',
CAST(availyid AS VARCHAR)
FROM objectAvail t2
WHERE t1.oid = t2.oId
FOR XML PATH('')
), 1, 1, '') as [Days]
FROM objectresource t1
GROUP BY t1.oid
我让它工作了(:
我让它工作了(:
不要用两个db.mysql和sql server来标记您的问题?您的第二个STUFF/FOR XML路径没有从对象可用性表中提取DayName列。选择“,”,CAST(availyid为VARCHAR)应该是选择“,”+DayName首先,将星期一设置为一周的第一天(请参阅此链接)然后我会根据当天返回到输出的数字写一个case语句week@SeanR我不能这样做,因为Dayname来自另一个表。我更改了ObjectAvail表中的SELECT“,”+Dayname,它会给我相同的无效错误。不要用两个db.mysql和sql server标记您的问题?您的第二件事/FORXML PATH没有从对象可用性表中提取DayName列。选择“,”,强制转换(availyid为VARCHAR)应为选择“,”+DayName首先,将星期一设置为一周的第一天(请参见此链接)然后我会根据当天返回到输出的数字写一个case语句week@SeanR我无法执行此操作,因为Dayname来自另一个表。我已更改ObjectAvail表中的SELECT“,”+Dayname,它会给我相同的无效错误