Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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
C# C数据集设计器-AccesDB-将两行合并为一行_C#_Sql_Ms Access 2016 - Fatal编程技术网

C# C数据集设计器-AccesDB-将两行合并为一行

C# C数据集设计器-AccesDB-将两行合并为一行,c#,sql,ms-access-2016,C#,Sql,Ms Access 2016,我需要您帮助我在C数据集查询生成器中构建一个SQL查询 选择househouse.HHID、Client.FIRST\u NAME、Client.LAST\u NAME 来自客户 Client.CID上的内部连接住户_客户端=住户_客户端.CID 在house_Client.HHID=house.HHID上内部连接house 上述代码为我提供了所有家庭的列表,这些家庭的身份证上有属于他们的客户: HHID | FIRST_NAME | LAST_NAME -----------------

我需要您帮助我在C数据集查询生成器中构建一个SQL查询

选择househouse.HHID、Client.FIRST\u NAME、Client.LAST\u NAME 来自客户 Client.CID上的内部连接住户_客户端=住户_客户端.CID 在house_Client.HHID=house.HHID上内部连接house 上述代码为我提供了所有家庭的列表,这些家庭的身份证上有属于他们的客户:

HHID  |  FIRST_NAME |  LAST_NAME
------------------------------
1     |  Penelope   |  Grant
1     |  Brian      |  Dyer
2     |  James      |  Newman
2     |  Richard    |  Parsons
。。但我不知道如何让属于同一个家庭的人出现在同一条线上,比如稍后的数据网格视图:

HHID | I_FIRST_NAME | I_LAST_NAME | II_FIRST_NAME | II_LAST_NAME
-----------------------------------------------------------------
1    | Penelope     | Grant       | Brian         | Dyer
2    | James        | Newman      | Richard       | Parsons
我发现了大量非常相似的问题,但很少有人有同样的问题需要解决。一两个真正有相同问题的人,他们有解决办法,我就是无法扭转我的问题

非常感谢您的帮助。。。 非常感谢你,
AD

由于您每户只有2人,您可以使用此技巧获得每户的最小和最大客户Id。这是在子查询中完成的

SELECT
    X.HHID,
    C1.FIRST_NAME AS I_FIRST_NAME, C1.LAST_NAME AS I_LAST_NAME,
    C2.FIRST_NAME AS II_FIRST_NAME, C2.LAST_NAME AS II_LAST_NAME
FROM
    ((  SELECT
            HHID, Min(CID) AS MinCId, IIf(Max(CID)=Min(CID), Null, Max(CID))  AS MaxCId
        FROM HouseHold_Client
        GROUP BY HHID
    ) X
    INNER JOIN Client AS C1
        ON X.MinCId = C1.CID)
    LEFT JOIN Client AS C2
        ON X.MaxCId = C2.CID;
IIf表达式的目的是仅当最大客户机Id与最小客户机Id不同时才输出最大客户机Id。要在MaxCId为Null时返回记录,C2上需要左连接

我没有在这里加入Househouse表,因为我们只需要其中的HHID,它也可以在Househouse_Client中使用。当然,如果需要其他列,也可以加入它

子查询:

(  SELECT
        HHID, Min(CID) AS MinCId, IIf(Max(CID)=Min(CID), Null, Max(CID))  AS MaxCId
    FROM HouseHold_Client
    GROUP BY HHID
) X
子查询必须用括号括起来,并在此处指定名称。X作为一个普通表,在主查询中包含HHID、MinCId和MaxCId列。它按HHID分组。即,它每个HHID返回一行。MinCID返回每个HHID的最小CID和MaxCID最大CID


如果每个HHID有2个客户端,这意味着Min和Max将生成这2个客户端。如果您只有一个客户端,那么Min和Max都将返回同一个客户端。如果是这种情况,IIf将返回Null而不是MaxCID,以避免返回两次相同的客户端。

由于每户只有2人,您可以使用此技巧获得每户的最小和最大客户端Id。这是在子查询中完成的

SELECT
    X.HHID,
    C1.FIRST_NAME AS I_FIRST_NAME, C1.LAST_NAME AS I_LAST_NAME,
    C2.FIRST_NAME AS II_FIRST_NAME, C2.LAST_NAME AS II_LAST_NAME
FROM
    ((  SELECT
            HHID, Min(CID) AS MinCId, IIf(Max(CID)=Min(CID), Null, Max(CID))  AS MaxCId
        FROM HouseHold_Client
        GROUP BY HHID
    ) X
    INNER JOIN Client AS C1
        ON X.MinCId = C1.CID)
    LEFT JOIN Client AS C2
        ON X.MaxCId = C2.CID;
IIf表达式的目的是仅当最大客户机Id与最小客户机Id不同时才输出最大客户机Id。要在MaxCId为Null时返回记录,C2上需要左连接

我没有在这里加入Househouse表,因为我们只需要其中的HHID,它也可以在Househouse_Client中使用。当然,如果需要其他列,也可以加入它

子查询:

(  SELECT
        HHID, Min(CID) AS MinCId, IIf(Max(CID)=Min(CID), Null, Max(CID))  AS MaxCId
    FROM HouseHold_Client
    GROUP BY HHID
) X
子查询必须用括号括起来,并在此处指定名称。X作为一个普通表,在主查询中包含HHID、MinCId和MaxCId列。它按HHID分组。即,它每个HHID返回一行。MinCID返回每个HHID的最小CID和MaxCID最大CID


如果每个HHID有2个客户端,这意味着Min和Max将生成这2个客户端。如果您只有一个客户端,那么Min和Max都将返回同一个客户端。如果是这种情况,则IIf将返回Null而不是MaxCID,以避免返回两次相同的客户端。

每户最多2人吗?是。。。最小值为1,最大值为2。谢谢…每户最多2人吗?是的。。。最小值为1,最大值为2。谢谢你…嗨,奥利弗。。。你的解决方案正是我所需要的。这对我来说还是太难理解了。。。干得好,谢谢。。为什么设计器会说:向导在配置TableAdapter时检测到以下问题:“填充”。详情:!生成的SELECT语句。无法识别函数参数列表“=”中的错误。关于和“左”也是相同的。无法分析查询文本?虽然它给了我所有这些,但它给了我预期的结果。。。再次非常感谢…有时手动构造的命令只能在SQL视图中查看,而不能在设计器视图中查看。嗨,Olivier。。。你的解决方案正是我所需要的。这对我来说还是太难理解了。。。干得好,谢谢。。为什么设计器会说:向导在配置TableAdapter时检测到以下问题:“填充”。详情:!生成的SELECT语句。无法识别函数参数列表“=”中的错误。关于和“左”也是相同的。无法分析查询文本?虽然它给了我所有这些,但它给了我预期的结果。。。再次感谢您…有时手动构造的命令只能在SQL视图中查看,而不能在designer视图中查看。