SQ语句转ACCESS问题

hehaiyi2008 2010-06-02 03:05:38
以下语句在SQL Server中,测试通过,但在ACCESS中报错。 也尝试用IIF 替换 ISNULL 但仍然报错!请大家帮忙看看如何修改。谢谢!

SELECT a.货号, ISNULL(a.数量, 0) 数量, a.单价1, 存货 = ISNULL(a.数量, 0)-ISNULL(b.数量, 0)
- ISNULL(c.数量, 0)+ISNULL(d.数量, 0), 单价2 = ISNULL(j.单价2, a.单价1)
FROM (
SELECT 货号, SUM(数量) 数量, 单价1
FROM 表1
GROUP BY 货号, 单价1
)
a
LEFT JOIN (
SELECT 货号, SUM(数量) 数量
FROM 表2
GROUP BY 货号
) b
ON a.货号 = b.货号
LEFT JOIN (
SELECT 货号, SUM(数量) 数量
FROM 表3
GROUP BY 货号
) c
ON a.货号 = c.货号
LEFT JOIN (
SELECT 货号, SUM(数量) 数量
FROM 表4
GROUP BY 货号
) d
ON a.货号 = d.货号
LEFT JOIN JC j
ON a.货号 = j.货号


...全文
211 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hehaiyi2008 2010-06-02
  • 打赏
  • 举报
回复
如果没有IIF 语句 直接 j.定价 as 单价2 就很正常!
加上IIF语句,该列就为空
hehaiyi2008 2010-06-02
  • 打赏
  • 举报
回复
【表1】 中 没有保存定价记录
【JC】 中 都有对应货号的定价记录

应该是没问题啊!
但就是显示不出来!

在SQL Server 中就没有这个问题。
WWWWA 2010-06-02
  • 打赏
  • 举报
回复
恐怕要检查你的表记录来判断什么问题
hehaiyi2008 2010-06-02
  • 打赏
  • 举报
回复
别名循环引用, 这个问题已经解决。谢谢大家!

现在又遇到了一个问题,就是最后一列 ... IIF(j.定价 IS null,0,a.定价) as 单价2 可能还是有问题。
明明j.定价 是有值的。但最后的结果是最后一列【单价2】,显示出来都为空。

不知道怎么回事。。。。
WWWWA 2010-06-02
  • 打赏
  • 举报
回复
SELECT a.货号,IIF(a.数量a IS NULL,0,a.数量a) AS 数量1, J.定价, IIF(a.数量a IS NULL,0,a.数量a)-IIF(b.数量b IS NULL,0,b.数量b)
- IIF(c.数量c IS NULL,0,c.数量c)+IIF(d.数量d IS NULL,0,d.数量d) as 存货, IIF(j.定价 IS null,0,a.定价) as 单价2
FROM (((( SELECT 货号, SUM(数量) as 数量a, 定价 From 表1 GROUP BY 货号, 定价 ) as a
LEFT JOIN
( SELECT 货号, SUM(数量) as 数量b From 表2 GROUP BY 货号 ) b
ON a.货号 = b.货号)
LEFT JOIN
( SELECT 货号, SUM(数量) as 数量c From 表3 GROUP BY 货号 ) c
ON a.货号 = c.货号)
LEFT JOIN
( SELECT 货号, SUM(数量) as 数量d From 表4 GROUP BY 货号 ) d
ON a.货号 = d.货号)
LEFT JOIN JC j
ON a.货号 = j.货号
hehaiyi2008 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 acmain_chm 的回复:]

SELECT a.货号,IIF(a.数量 IS NULL,0,a.数量) AS 数量1, J.定价, IIF(a.数量 IS NULL,0,a.数量)-IIF(b.数量 IS NULL,0,b.数量1)
- IIF(c.数量 IS NULL,0,c.数量)+IIF(d.数量 IS NULL,0,d.数量) as 存货, IIF(j.定价 IS null,0,a.定价) as 单价2
……
[/Quote]

这个我试了还会报 “别名 数量 循环引用” 错误!
别名数量,必需全部更改。这个问题已解决。

但最后一列.. IIF(j.定价 IS null,0,a.定价) as 单价2 还是不正确。
明明j.定价 是有值的。但最后一列【单价2】列,显示出来都为空。

这个错误已经解决。但

ACMAIN_CHM 2010-06-02
  • 打赏
  • 举报
回复
SELECT a.货号,IIF(a.数量 IS NULL,0,a.数量) AS 数量1, J.定价, IIF(a.数量 IS NULL,0,a.数量)-IIF(b.数量 IS NULL,0,b.数量1)
- IIF(c.数量 IS NULL,0,c.数量)+IIF(d.数量 IS NULL,0,d.数量) as 存货, IIF(j.定价 IS null,0,a.定价) as 单价2
FROM (((( SELECT 货号, SUM(数量)as 数量, 定价 From 表1 GROUP BY 货号, 定价 )as a
LEFT JOIN
( SELECT 货号, SUM(数量)as 数量 From 表2 GROUP BY 货号 ) b
ON a.货号 = b.货号)
LEFT JOIN
( SELECT 货号, SUM(数量)as 数量 From 表3 GROUP BY 货号 ) c
ON a.货号 = c.货号)
LEFT JOIN
( SELECT 货号, SUM(数量)as 数量 From 表4 GROUP BY 货号 ) d
ON a.货号 = d.货号)
LEFT JOIN JC j
ON a.货号 = j.货号
WWWWA 2010-06-02
  • 打赏
  • 举报
回复
AS 数量1
取不同的别名
hehaiyi2008 2010-06-02
  • 打赏
  • 举报
回复
修改后仍然报错 “别名 数量 循环引用


SELECT a.货号,IIF(a.数量 IS NULL,0,a.数量) AS 数量, J.定价, IIF(a.数量 IS NULL,0,a.数量)-IIF(b.数量 IS NULL,0,b.数量1)
- IIF(c.数量 IS NULL,0,c.数量)+IIF(d.数量 IS NULL,0,d.数量) as 存货, IIF(j.定价 IS null,0,a.定价) as 单价2
FROM (((( SELECT 货号, SUM(数量)as 数量, 定价 From 表1 GROUP BY 货号, 定价 )as a
LEFT JOIN
( SELECT 货号, SUM(数量)as 数量 From 表2 GROUP BY 货号 ) b
ON a.货号 = b.货号)
LEFT JOIN
( SELECT 货号, SUM(数量)as 数量 From 表3 GROUP BY 货号 ) c
ON a.货号 = c.货号)
LEFT JOIN
( SELECT 货号, SUM(数量)as 数量 From 表4 GROUP BY 货号 ) d
ON a.货号 = d.货号)
LEFT JOIN JC j
ON a.货号 = j.货号
chuifengde 2010-06-02
  • 打赏
  • 举报
回复
除isnull,带别名的都要用 as 别名的格式
WWWWA 2010-06-02
  • 打赏
  • 举报
回复
ISNULL(a.数量, 0) 数量->IIF(a.数量 IS NULL,0,a.数量) AS 数量
其它自行修改

FROM ((((
SELECT 货号, SUM(数量) 数量, 单价1
FROM 表1
GROUP BY 货号, 单价1
)
a
LEFT JOIN (
SELECT 货号, SUM(数量) 数量
FROM 表2
GROUP BY 货号
) b
ON a.货号 = b.货号)
LEFT JOIN (
SELECT 货号, SUM(数量) 数量
FROM 表3
GROUP BY 货号
) c
ON a.货号 = c.货号)
LEFT JOIN (
SELECT 货号, SUM(数量) 数量
FROM 表4
GROUP BY 货号
) d
ON a.货号 = d.货号)
LEFT JOIN JC j
ON a.货号 = j.货号

7,732

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧