我在SQL方面不是很出色,我做了一些搜索,却无法真正弄清楚如何使用STUFF。我的意思是看起来很简单,但是当我使用它时,总会出现错误。
无论如何,这是我的代码的一部分,我只想将行中的2台打印机与从数据库中提取的相同计算机名结合起来,说实话,我什至不确定我是否做得对,但请正确执行如果我错了我。确实需要专业人士来指导我,如果信息不足,请告诉我。预先感谢。
更新:
添加了更多代码,但我没有明确提及,我的查询正在从多个表中提取不同的数据。可能有点混乱,但是它满足了我的要求,我的问题是合并打印机结果。
SELECT DISTINCT sc.ComputerName AS 'Computer name',
*
*
*
ISNULL(c.PrinterName <-- error on this c.printername
(
STUFF
((
SELECT
'; ' + c.PrinterName
FROM PrinterList AS c
WHERE c.ComputerName = sc.ComputerName
FOR XML PATH(''), TYPE).value('.','nvarchar(max)'), 1, 2,'')), '') AS 'Printer'
FROM Computer sc
Full Join PCInfo AS a
ON a.ComputerName = sc.ComputerName
Full Join DriverList AS b
ON b.ComputerName = sc.ComputerName
Full Join PrinterList AS c
ON c.ComputerName = sc.ComputerName
WHERE RTRIM(LTRIM(REPLACE(lower(sc.ComputerName), ' ',''))) like '%example%'
答案 0 :(得分:1)
c别名仅在子查询的名称空间中可用,但您不能从那里引用它。
答案 1 :(得分:0)
我期望这样的事情:
SELECT c.PrinterName,
STUFF( (SELECT '; ' + c.PrinterName
FROM PrinterList AS c
WHERE c.ComputerName = sc.ComputerName
FOR XML PATH(''), TYPE
).value('.', 'nvarchar(max)'
), 1, 2, '')
) as printers
FROM computer c ;
外部查询中不需要join
。我也看不到为什么需要outer join
。