Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决IIF(SUM IIF)SQL脚本中的空数据表结果_Sql_Ms Access - Fatal编程技术网

如何解决IIF(SUM IIF)SQL脚本中的空数据表结果

如何解决IIF(SUM IIF)SQL脚本中的空数据表结果,sql,ms-access,Sql,Ms Access,我有一个Excel报告,我正试图用SQL查询在MS Access中重新创建该报告。我使用了IIF SUM函数,但它没有返回特定字段中的预期结果(“是”),而只是返回空白单元格。我的剧本怎么了 我以前没有用过这个IIF求和函数,所以我需要一些帮助。下面的SQL查询是使用示例表名和字段名构建的 SELECT DISTINCT [Table 1].[Paint ID], [Table 1].[Paint Colour], [Table

我有一个Excel报告,我正试图用SQL查询在MS Access中重新创建该报告。我使用了IIF SUM函数,但它没有返回特定字段中的预期结果(“是”),而只是返回空白单元格。我的剧本怎么了

我以前没有用过这个IIF求和函数,所以我需要一些帮助。下面的SQL查询是使用示例表名和字段名构建的

SELECT DISTINCT [Table 1].[Paint ID], 
                [Table 1].[Paint Colour], 
                [Table 1].[Production Date], 
                [Table 1].[Price], 
                [Table 1].[VAT], 
                [Table 1].[Total Units],
IIF(Sum(IIF([Table 2].[Company Name] IN("Paintbox Ltd", "ColourSplash plc", "HomeDIY"),1,0))>0,"YES",NULL) AS UK Sellers,
IIF(Sum(IIF([Table 2].[Company Name] IN("BrightWalls", "PerfectHome", "PaintIt"),1,0))>0,"YES",NULL) AS Europe Sellers,
IIF(SUM(IIF([Table 2].[Company Name]="Habari",1,0))>0,"YES",NULL) as Africa Sellers,
IIF(SUM(IIF([Table 2].[Company Name]="Malay Paint",1,0))>0,"YES",NULL) as Asia Sellers
    FROM [Tale 1] LEFT JOIN [Table 2] ON [Table 1].[Paint ID] = [Table 2].[Paint ID]
    GROUP BY [Table 1].[Paint ID], [Table 1].[Paint Colour], [Table 1].[Production Date], [Table 1].[Price], [Table 1].[VAT], [Table 1].[Total Units];

我期待着一个表格,上面有英国卖家、欧洲卖家等的栏目,其中一些栏目如excel报告中的“是”。然而,他们返回空白。除此之外,查询运行正常,结果网格是我期望它在其布局中的状态,只是我期望“是”的地方有空白单元格。

我建议使用
max
聚合函数,以便您可以完全删除一组
iif
语句,例如:

选择
[表1][油漆ID],
[表1][油漆颜色],
[表1][生产日期],
[表1][价格],
[表1][增值税],
[表1][总单位],
max(iif([表2]。[公司名称](“Paintbox Ltd”,“ColorSplash plc”,“HomeDIY”),“是”,空))作为[英国卖方],
max(iif([表2][公司名称](“BrightWalls”,“PerfectHome”,“PaintIt”),“是”,空))作为[欧洲卖方],
max(iif([表2]。[公司名称]=“Habari”,“是”,空))作为[非洲卖方],
max(iif([表2]。[公司名称]=“马来油漆”,“是”,空))作为[亚洲卖方]
从…起
[表1]在[表1].[Paint ID]=[表2].[Paint ID]上左连接[表2]
分组
[表1][油漆ID],
[表1][油漆颜色],
[表1][生产日期],
[表1][价格],
[表1][增值税],
[表1][总单位];

查询中的逻辑正确。
我复制了它,修复了语法错误,在表中添加了别名,并删除了
DISTINCT
关键字,该关键字无效,因为您使用了
GROUP BY
,并且该代码按预期工作:

SELECT 
  t1.[Paint ID], 
  t1.[Paint Colour], 
  t1.[Production Date], 
  t1.[Price], 
  t1.[VAT], 
  t1.[Total Units],
IIF(Sum(IIF(t2.[Company Name] IN ("Paintbox Ltd", "ColourSplash plc", "HomeDIY"), 1, 0)) > 0, "YES", NULL) AS UK Sellers,
IIF(Sum(IIF(t2.[Company Name] IN ("BrightWalls", "PerfectHome", "PaintIt"), 1, 0)) > 0,"YES", NULL) AS Europe Sellers,
IIF(SUM(IIF(t2.[Company Name] = "Habari", 1, 0)) > 0, "YES", NULL) as Africa Sellers,
IIF(SUM(IIF(t2.[Company Name] = "Malay Paint", 1, 0)) > 0, "YES", NULL) as Asia Sellers
FROM [Table 1] AS t1 LEFT JOIN [Table 2] AS t2 ON t1.[Paint ID] = t2.[Paint ID]
GROUP BY t1.[Paint ID], t1.[Paint Colour], t1.[Production Date], t1.[Price], t1.[VAT], t1.[Total Units];

你能粘贴你查询的准确代码吗?因为这个代码在语法上是错误的。嗨,李麦克,谢谢你的建议,我喜欢它。但是,当我将代码更改为此时,出现了一条错误消息,指出查询表达式中的函数使用了错误数量的参数。有什么遗漏吗?@Mari我忘了用方括号将别名
英国卖家
欧洲卖家
等括起来(因为这些别名包含空格)。我现在已经更新了上面的代码-你能试试吗?