C# 如何合并具有不同WHERE和GROUP BY子句的两个SELECT查询
我有以下两个问题:C# 如何合并具有不同WHERE和GROUP BY子句的两个SELECT查询,c#,sql,google-bigquery,C#,Sql,Google Bigquery,我有以下两个问题: SELECT Actor2Code, COUNT(Actor2Code) AS playermentions FROM [events] WHERE Year=" + Date + " AND ( ( (Actor1CountryCode ='" + mainPlayer1 + "') AND (Actor2CountryCode
SELECT
Actor2Code,
COUNT(Actor2Code) AS playermentions
FROM [events]
WHERE
Year=" + Date + "
AND
(
(
(Actor1CountryCode ='" + mainPlayer1 + "')
AND
(Actor2CountryCode != '" + mainPlayer1 + "')
)
OR
(
Actor1CountryCode='" + mainPlayer2 + "'
AND
Actor2CountryCode !='" + mainPlayer2 + "'
)
)
GROUP BY Actor2Code;
及
我将结果合并到c中,我有一个参与者列表和另一个提及次数列表。如何将这两个查询合并为一个,这样我就有一个参与者列表,并且没有重复的actorcodes?一些参与者在回答这两个问题时提到的次数不同。我想编写一个查询,合并这两个查询的结果,并给我一个列表,其中包括不同的Actor1代码和Actor2代码以及重复值的提及次数。我需要有提及次数之和。这几乎可以实现,但您必须手动删除重复项
SELECT ActorCode, playermentions FROM
(SELECT
Actor2Code as ActorCode,
COUNT(Actor2Code) AS playermentions
FROM [events]
WHERE
Year=" + Date + "
AND
(
(
(Actor1CountryCode ='" + mainPlayer1 + "')
AND
(Actor2CountryCode != '" + mainPlayer1 + "')
)
OR
(
Actor1CountryCode='" + mainPlayer2 + "'
AND
Actor2CountryCode !='" + mainPlayer2 + "'
)
)
GROUP BY Actor2Code),
(SELECT
Actor1Code as ActorCode,
COUNT(Actor1Code) AS playermentions
FROM [events]
WHERE
Year=" + Date + "
AND
(
(
(Actor2CountryCode ='" + mainPlayer1 + "')
AND
(Actor1CountryCode != '" + mainPlayer1 + "')
)
OR
(
Actor2CountryCode='" + mainPlayer2 + "'
AND
Actor1CountryCode !='" + mainPlayer2 + "'
)
)
GROUP BY Actor1Code);
您是否尝试过>-然后将联合的结果分组到ActorCode上。我最初认为联合可能不起作用,但根据他所寻找的,这是一个SELECT还是这是SQLIt中的一个过程?我相信这不是一个过程,因为我正在阅读Google Big query,一次只能发送一个查询,谢谢您的回复。您的代码产生以下错误:错误:GROUP BY LIST中不存在表达式“ActorCode”。我找不到此列表中的任何文档,但请尝试使用GROUP BY ActorCode而不是GROUP BY Actor2Code。GROUP BY ActorCode已工作,但现在的结果是,好像我已经合并了从两个查询中分别得到的两个数组。合并了ActorCodes和NumberOfReferences。我的问题是,我需要不同的ActorCodes,提及次数应该是重复值的提及次数之和。是吗?也许把它包在外面的一组里?
SELECT ActorCode, playermentions FROM
(SELECT
Actor2Code as ActorCode,
COUNT(Actor2Code) AS playermentions
FROM [events]
WHERE
Year=" + Date + "
AND
(
(
(Actor1CountryCode ='" + mainPlayer1 + "')
AND
(Actor2CountryCode != '" + mainPlayer1 + "')
)
OR
(
Actor1CountryCode='" + mainPlayer2 + "'
AND
Actor2CountryCode !='" + mainPlayer2 + "'
)
)
GROUP BY Actor2Code),
(SELECT
Actor1Code as ActorCode,
COUNT(Actor1Code) AS playermentions
FROM [events]
WHERE
Year=" + Date + "
AND
(
(
(Actor2CountryCode ='" + mainPlayer1 + "')
AND
(Actor1CountryCode != '" + mainPlayer1 + "')
)
OR
(
Actor2CountryCode='" + mainPlayer2 + "'
AND
Actor1CountryCode !='" + mainPlayer2 + "'
)
)
GROUP BY Actor1Code);