我确信这是一个简单的问题,我发誓我搜索了论坛但没有任何帮助。我有一个SQL查询,我想要不同的SYS.Name0:
SELECT DISTINCT SYS.Name0 As 'PC Name', PR.Name0 AS 'Printer Name'
FROM v_R_System SYS
INNER JOIN v_GS_PRINTER_DEVICE PR
ON SYS.ResourceID = PR.ResourceID
WHERE SYS.AD_Site_Name0 = 'Texas'
即使使用DISTINCT,我也会获得重复的SYS.Name0(PC名称)。
搜索论坛后,我添加了GROUP BY SYS.Name0
但后来我收到了错误:
列' v_GS_PRINTER_DEVICE.Name0'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
非常感谢任何帮助
答案 0 :(得分:0)
如果您想要其他列,则应使用group by
。然后你必须决定如何处理其他列,例如:
SELECT SYS.Name0 As PC_Name, MAX(PR.Name0) AS Printer_Name
FROM v_R_System SYS INNER JOIN
v_GS_PRINTER_DEVICE PR
ON SYS.ResourceID = PR.ResourceID
WHERE SYS.AD_Site_Name0 = 'Texas'
GROUP BY SYS.Name0;
注意:我建议您不要对列名使用单引号。使用为数据库定义的分隔符,可能是双引号,方括号或后面的刻度。
答案 1 :(得分:0)
包含按结果分组的列:
SELECT DISTINCT SYS.Name0 AS 'PC Name', PR.Name0 AS 'Printer Name'
FROM v_R_System AS SYS INNER JOIN
v_GS_PRINTER_DEVICE AS PR ON SYS.ResourceID = PR.ResourceID
WHERE (SYS.AD_Site_Name0 = 'Texas')
GROUP BY SYS.Name0, PR.Name0