具有基于字段值的列值的组合框

时间:2020-06-25 23:41:33

标签: sql ms-access

我正在制作一个组合框,其中显示了一个密钥标识符和摘要。

Here's a mockup of source data

因此,在某些情况下,存在具有相同父ID的史诗(2)和故事(3)。我也有一些案例,其中有一个故事(5)和一个父ID(4),不在表中。

我想创建一个看起来像这样的两列组合框
looks like this

我希望第一列(绑定列)仅显示每个父级ID一次。在像父母ID 2的情况下,既有史诗又有故事,我希望第二列显示史诗摘要。但是对于父母ID 4,因为我自己的记录中的表不存在ID 4,我想使用ID 5的摘要填充Summary。

我完全不知道如何在SQL中执行此操作。

SELECT table.[Parent ID], First(table.[Summary]) As [Summary]

与我所了解的差不多,但这只是返回给定父ID的第一个摘要,无论该记录是Epic类型还是Story。

我已经为此困扰了一段时间,非常感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

考虑:

SELECT ParentID, Summary FROM Table3 WHERE ID IN (
    SELECT TOP 1 ID FROM Table3 AS Dupe 
    WHERE Dupe.ParentID=Table3.ParentID ORDER BY Dupe.Type);

答案 1 :(得分:0)

这是GROUP BY生效的地方。

SELECT ParentID, MAX(Summary)
FROM Table3
GROUP BY ParentID

但这只是图片的一部分,因为您会丢失“ Once Told Me”,因为从字母上看,它比“ The World”要小。

如果您需要查看所有摘要,则可能会有所帮助:

SELECT ParentID, Summary, MAX(Type) AS [Type], COUNT(*)
FROM Table3
GROUP BY ParentID, Summary

答案 2 :(得分:0)

嗯,我认为以下内容可以通过优先选择Epic来实现您想要的功能:

select parentid,
       nz(max(iif(type = "Epic", summary, null)),
          max(summary)
         )
from t
group by parentid;