模拟子查询,访问中没有主表

时间:2015-12-15 06:42:43

标签: sql ms-access-2010

我可以在SQL Server中执行此操作:

SELECT 'HERRAMIENTA ELÉCTRICA' AS TIPO_PRODUCTO,
       0 AS DEPRECIACION,
       (select sum(empid) from HR.employees) STOCK

但在Access中,相同的查询显示下一个错误:

  

查询输入必须至少包含一个表或查询

那么哪个可能是效仿这个的最佳形式?与任何其他表格查询看起来很脏。

编辑1:,HR.employees它可能没有数据,但我想要显示常量('HERRAMIENTAELÉCTRICA',''0')和第三列中的0,可能使用isnull和这不是问题所在。

4 个答案:

答案 0 :(得分:2)

为什么不直接选择:

select 'HERRAMIENTA ELÉCTRICA' AS TIPO_PRODUCTO,
        0 AS DEPRECIACION, 
        IIF(ISNULL(sum(empid)), 0, sum(empid)) AS STOCK 
from HR.employees

答案 1 :(得分:0)

将此示例用作空表:

with employ as
    (select 2 as col from dual
    minus
    select 2 as col from dual)

查询是这样的:

select 'HERRAM' as tipo,
    0 as deprec,
    coalesce(sum(col), 0) as STOCK
from employ;
当p为空时,

coalesce(x, value)将列设置为值

答案 2 :(得分:0)

这在Access中无效。你需要一个FROM子句。

所以你需要有一个带有一条记录的虚拟表,即使你没有使用该表中的单个字段。

SELECT 'HERRAMIENTA ELÉCTRICA' AS TIPO_PRODUCTO,
       0 AS DEPRECIACION,
       (select sum(empid) from HR.employees) STOCK
FROM Dummy_Table

答案 3 :(得分:0)

在Access中,您可以使用系统表,并使用ValNz作为零值:

SELECT TOP 1
    'HERRAMIENTA ELÉCTRICA' AS TIPO_PRODUCTO,
    0 AS DEPRECIACION,
    Val(Nz((select sum(empid) from HR.employees), 0)) AS STOCK
FROM
    MSysObjects