SQL-找不到列“ c”或用户定义的函数或聚合“ c”或名称不明确

时间:2018-07-16 02:02:19

标签: sql sql-server

我在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%' 

2 个答案:

答案 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