Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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
Sql 连接中的行太多_Sql_Join_Case_Where Clause - Fatal编程技术网

Sql 连接中的行太多

Sql 连接中的行太多,sql,join,case,where-clause,Sql,Join,Case,Where Clause,我试图连接两个表,其中我希望结果只是结果表中的两个额外的列,而不是额外的行 我的目的是在属性值为True且属性名称为三种不同类型时获取属性 当我加入这些表时,我当然会在每个现有属性名中多得到一行,但我不知道如何限制这一点 也就是说,在下面的代码中,我只希望为每个现有行(Trade_Id)获取一个具有ForwardCurveName和属性_Name的列。 案例代码是在另一个表的属性_值为True且仅针对三种不同类型的_名称时,为我提供所需的输出 在属性表中,有15个属性,可以有多个“真”属性 这是

我试图连接两个表,其中我希望结果只是结果表中的两个额外的列,而不是额外的行

我的目的是在属性值为True且属性名称为三种不同类型时获取属性

当我加入这些表时,我当然会在每个现有属性名中多得到一行,但我不知道如何限制这一点

也就是说,在下面的代码中,我只希望为每个现有行(Trade_Id)获取一个具有ForwardCurveName和属性_Name的列。 案例代码是在另一个表的属性_值为True且仅针对三种不同类型的_名称时,为我提供所需的输出

在属性表中,有15个属性,可以有多个“真”属性

这是我在这里的第一个问题,所以我希望我可以理解!谢谢

一些样本数据:

  • 在属性表中 列实体_键与Trade_Id相同,并以其15个不同的属性值显示15次 列属性_值由False、True、id、number和name组成,因为它是许多不同值的混合体
Attribute\u Name
是不同值的文本名称,我只对这些名称“NCG”、“GPN”、“TTF”感兴趣

(不知道如何在没有截图的情况下替换数据,这在我阅读的这些文章中是不允许的)

一行 实体Id 属性值 属性名称 数据类型 1. NE00020216 真的 NCG 布尔值 2. NE00020216 假的 TTF 布尔值 3. NE00020216 假的 GPN 布尔值 4. NE00020216 5. 其他名称 数 5. .... 6. ....
欢迎来到S/O。你可能非常接近。如果属性表有多行,这就是返回多行的原因。但是,如果您的属性表只有一个AtditTyValue=“true”,那么我已经将它移出该情况/时,并将其移动到连接,因此它只考虑返回“true”属性。

现在,如果您有多个属性为true的可能性,那么仍然会返回多行。编辑你现有的文章,展示一些现在和将来的样本数据,也会帮助其他人更好地帮助你

select 
        t.Trade_Id,
        TP.Start_Trade as Day,
        -- Due to the Start_Trade code, this volume is only for the future periods, and not the total for each trade
        tp.volume * 12.157 / 1000 Contracted_Volume,
        tp.volume * 12.157 / 1000 / 24 MwH,
        t.Counterparty_name,
        t.Trade_Type,
        t.Product_Type_Name,
        month(TP.Start_Trade) as Month,
        year(TP.Start_Trade) as Year,
        case when a.attribute_name = 'NCG' then 'NCG Heren'
            when a.attribute_name = 'TTF' then 'TTF Heren'
            when a.attribute_name = 'GPN' then 'GPN Heren'
            else 'Mistake' end ForwardCurveName, 
        a.Attribute_Name
    from 
        entrader.Trades_vw T
        --Left join [Reporting].[Trade_Hubs_vw] TH on t.Trade_Id = Th.Trade_Id
        left JOIN Entrader.Trade_Period_vw TP 
            ON T.Trade_Id = TP.Trade_Id
        left join core.Attribute_Values_vw A 
            on t.Trade_Id = a.Entity_Key
            AND a.Attribute_Value = 'true'

答案取决于您想保留哪一行和避免哪一行。请澄清此详细信息。您可以添加“我正在获取此信息:…”和“我希望获取此信息:…”谢谢,已使用您的输入进行更新。您好,DRapp,谢谢您的回复,您是对的,属性表中可以有多个值设置为True。所以很不幸,你的优秀代码并没有解决我的问题,尽管它离我越来越近了!我试图添加一些示例数据,但不确定如何显示。