SQL-获取同一表的行

SQL-获取同一表的行,sql,sql-server,database,stored-procedures,sql-server-2008-r2,Sql,Sql Server,Database,Stored Procedures,Sql Server 2008 R2,我有一张桌子 select * from Group Owner Member1 Member1\u Value Member2\u Value 凯莉·尼科尔2朱莉4 妮可·朱莉4凯利3 朱莉·凯利5妮可3 现在,我需要从我们的会员处为业主获取Avege价值 Owner Member1 Member1\u Value Member2\u Value Avg 凯莉·尼科尔2朱莉5 3.5 妮可·朱莉4凯利2.5 朱莉·凯利5妮可34.5 凯利的平均分3.5来自尼科尔给了2分,朱莉娅给了5分

我有一张桌子

select * from Group
Owner Member1 Member1\u Value Member2\u Value
凯莉·尼科尔2朱莉4
妮可·朱莉4凯利3
朱莉·凯利5妮可3
现在,我需要从我们的会员处为业主获取Avege价值

Owner Member1 Member1\u Value Member2\u Value Avg
凯莉·尼科尔2朱莉5 3.5
妮可·朱莉4凯利2.5
朱莉·凯利5妮可34.5
凯利的平均分3.5来自尼科尔给了2分,朱莉娅给了5分,平均分是3.5分。和尼科尔一样,凯利给了2分,朱莉给了3分,所以尼科尔的平均分为2.5分

那么如何从一个sql语句中获得平均列数呢

感谢你的回答


谢谢

如果我理解正确,那么它应该可以工作:

select *, cast((Member1_Value + Member2_Value) as Decimal(10,2))/2 [Avg] from Group

如果我理解正确,那么它应该可以工作:

select *, cast((Member1_Value + Member2_Value) as Decimal(10,2))/2 [Avg] from Group

如果我理解正确,那么它应该可以工作:

select *, cast((Member1_Value + Member2_Value) as Decimal(10,2))/2 [Avg] from Group

如果我理解正确,那么它应该可以工作:

select *, cast((Member1_Value + Member2_Value) as Decimal(10,2))/2 [Avg] from Group

<>我想说,你想要的是这个,但是你应该考虑规范一点表,以便能够更容易地完成这类查询:

SELECT
   Name, AVG(Value) AS Value
FROM
(
    SELECT
       Member1 AS Name,
       Member1_Value As Value
    FROM Group
    UNION ALL
    SELECT
       Member2 AS Name,
       Member2_Value As Value
    FROM Group
 ) Normalised
 GROUP BY Name
为此,将通过

成员(成员ID、名称) 组(组ID) GroupMember(MemberId,GroupId) 资格(提供成员ID、接收成员ID、值)


或类似的

我会说,你想要的是这个,但是你应该考虑规范一点表,以便能够更容易地完成这类查询:

SELECT
   Name, AVG(Value) AS Value
FROM
(
    SELECT
       Member1 AS Name,
       Member1_Value As Value
    FROM Group
    UNION ALL
    SELECT
       Member2 AS Name,
       Member2_Value As Value
    FROM Group
 ) Normalised
 GROUP BY Name
为此,将通过

成员(成员ID、名称) 组(组ID) GroupMember(MemberId,GroupId) 资格(提供成员ID、接收成员ID、值)


或类似的

我会说,你想要的是这个,但是你应该考虑规范一点表,以便能够更容易地完成这类查询:

SELECT
   Name, AVG(Value) AS Value
FROM
(
    SELECT
       Member1 AS Name,
       Member1_Value As Value
    FROM Group
    UNION ALL
    SELECT
       Member2 AS Name,
       Member2_Value As Value
    FROM Group
 ) Normalised
 GROUP BY Name
为此,将通过

成员(成员ID、名称) 组(组ID) GroupMember(MemberId,GroupId) 资格(提供成员ID、接收成员ID、值)


或类似的

我会说,你想要的是这个,但是你应该考虑规范一点表,以便能够更容易地完成这类查询:

SELECT
   Name, AVG(Value) AS Value
FROM
(
    SELECT
       Member1 AS Name,
       Member1_Value As Value
    FROM Group
    UNION ALL
    SELECT
       Member2 AS Name,
       Member2_Value As Value
    FROM Group
 ) Normalised
 GROUP BY Name
为此,将通过

成员(成员ID、名称) 组(组ID) GroupMember(MemberId,GroupId) 资格(提供成员ID、接收成员ID、值)


或者类似的东西这似乎是一个非常复杂的数据结构。通常,拥有像
member1
member2
这样的列是数据库设计不佳的标志。你真的应该规范化这个表

您似乎希望其他成员的贡献来自表中匹配的行。我认为以下内容符合您的要求:

select g.owner, (gm1.member2_value + gm2.member1_value) / 2.0
from group g join
     group gm1
     on g.owner = gm1.member1 join
     group gm2
     on g.owner = gm2.member2;

这似乎是一个非常复杂的数据结构。通常,拥有像
member1
member2
这样的列是数据库设计不佳的标志。你真的应该规范化这个表

您似乎希望其他成员的贡献来自表中匹配的行。我认为以下内容符合您的要求:

select g.owner, (gm1.member2_value + gm2.member1_value) / 2.0
from group g join
     group gm1
     on g.owner = gm1.member1 join
     group gm2
     on g.owner = gm2.member2;

这似乎是一个非常复杂的数据结构。通常,拥有像
member1
member2
这样的列是数据库设计不佳的标志。你真的应该规范化这个表

您似乎希望其他成员的贡献来自表中匹配的行。我认为以下内容符合您的要求:

select g.owner, (gm1.member2_value + gm2.member1_value) / 2.0
from group g join
     group gm1
     on g.owner = gm1.member1 join
     group gm2
     on g.owner = gm2.member2;

这似乎是一个非常复杂的数据结构。通常,拥有像
member1
member2
这样的列是数据库设计不佳的标志。你真的应该规范化这个表

您似乎希望其他成员的贡献来自表中匹配的行。我认为以下内容符合您的要求:

select g.owner, (gm1.member2_value + gm2.member1_value) / 2.0
from group g join
     group gm1
     on g.owner = gm1.member1 join
     group gm2
     on g.owner = gm2.member2;

嘿,迪帕克,谢谢你的回复。这是调查数据。所以凯利得到了妮可和朱莉的评价。根据您的sql,我只能得到我给我的成员的平均值。但在这里,我需要从我们的会员那里得到平均值?我希望你清楚。嘿,迪帕克,谢谢你的回复。这是调查数据。所以凯利得到了妮可和朱莉的评价。根据您的sql,我只能得到我给我的成员的平均值。但在这里,我需要从我们的会员那里得到平均值?我希望你清楚。嘿,迪帕克,谢谢你的回复。这是调查数据。所以凯利得到了妮可和朱莉的评价。根据您的sql,我只能得到我给我的成员的平均值。但在这里,我需要从我们的会员那里得到平均值?我希望你清楚。嘿,迪帕克,谢谢你的回复。这是调查数据。所以凯利得到了妮可和朱莉的评价。根据您的sql,我只能得到我给我的成员的平均值。但在这里,我需要从我们的会员那里得到平均值?我希望你清楚。
妮可得到平均值2.5,因为凯利给了2,朱莉给了3。
,我不明白??我需要得到平均值。意思是2+3/2=2.5,希望你能听到
Nicol得到平均值2.5,因为Kelly给了2,Julie给了3。
,我不明白??我需要得到平均值。意思是2+3/2=2.5,希望你能听到
Nicol得到平均值2.5,因为Kelly给了2,Julie给了3。
,我不明白??我需要得到平均值。意思是2+3/2=2.5,希望你能听到
Nicol得到平均值2.5,因为Kelly给了2,Julie给了3。
,我不明白??我需要得到平均值。它的意思是2+3/2=2.5,希望你能理解