Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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_Sql Server - Fatal编程技术网

SQL查询将两行合并为一行数据

SQL查询将两行合并为一行数据,sql,sql-server,Sql,Sql Server,我有一张桌子(见下图——红色方框)。它描述了我的表的内容(A、B、C和D)是列。数据结构将始终是这样的,如果列A为类型_1,则只有列B具有内容,而如果列A为类型_2,则列C和D具有内容,而列B为空 现在,重新用绿色方框括起来的表格是我想要的输出 我在构建select语句方面的经验不是很丰富,我几乎倾向于创建两个单独的表来获得我想要的结果(例如,一个表仅用于类型_1数据,另一个表仅用于类型_2数据) 问题是,是否可以使用SELECT查询查询两行并将其合并为单个输出结果?考虑到这两行在同一张桌子上

我有一张桌子(见下图——红色方框)。它描述了我的表的内容(A、B、C和D)是列。数据结构将始终是这样的,如果列A为类型_1,则只有列B具有内容,而如果列A为类型_2,则列C和D具有内容,而列B为空

现在,重新用绿色方框括起来的表格是我想要的输出

我在构建select语句方面的经验不是很丰富,我几乎倾向于创建两个单独的表来获得我想要的结果(例如,一个表仅用于类型_1数据,另一个表仅用于类型_2数据)

问题是,是否可以使用SELECT查询查询两行并将其合并为单个输出结果?考虑到这两行在同一张桌子上

谢谢。

诸如此类:

SELECT
  Table2Id,
  MAX(B) B,
  MAX(C) C,
  MAX(D) D
FROM tbl
WHERE A != 'Type_3'
GROUP BY Table2Id
大概是这样的:

SELECT
  Table2Id,
  MAX(B) B,
  MAX(C) C,
  MAX(D) D
FROM tbl
WHERE A != 'Type_3'
GROUP BY Table2Id

可以通过将子查询括在括号中来进行子查询。例如:

SELECT (SELECT TOP 1 B FROM table ORDER BY some_ordering), (SELECT TOP 1 C FROM table WHERE NOT C IS NULL), D FROM table

括号内的查询可以应用于任何表,并且可以在计算选定值和过滤器时使用主查询中的数据。

您可以通过将子查询括在括号内来进行子查询。例如:

SELECT (SELECT TOP 1 B FROM table ORDER BY some_ordering), (SELECT TOP 1 C FROM table WHERE NOT C IS NULL), D FROM table

括号内的查询可以应用于任何表,并且可以在计算选定值和筛选中使用主查询中的数据。

假设类型1只有一行数据,类型2只有一行数据,则可以使用以下方法:

 SELECT Id, MAX(B) AS B, MAX(C) AS C, MAX(D) AS D
   FROM Table2
  WHERE A IN ('Type_1','Type_2')
  GROUP BY Id

本例中,假设类型1只有一行数据,类型2只有一行数据,可以使用以下方法:

 SELECT Id, MAX(B) AS B, MAX(C) AS C, MAX(D) AS D
   FROM Table2
  WHERE A IN ('Type_1','Type_2')
  GROUP BY Id

在这个例子中

如果有多个Type_1和多个Type_2行,它怎么知道应该组合哪些行?@JoachimIsaksson,
数据结构总是这样
很抱歉,我在第一次评论后意识到我的图像不是很清晰。请查看更新的主题。@HamletHakobyan数据结构是相同的,但数据可能不同。@AlexandreP.Levasseur,我准确地讲述了数据结构。如果有多个Type_1和多个Type_2行,它如何知道要组合哪些行?@JoachimIsaksson,
数据结构将始终是这样的
,在第一次评论之后,我意识到我的形象不是很清晰。请参阅更新的主题。@HamletHakobyan数据结构相同,但数据可能不同。@AlexandreP.Levasseur,我确切地讲了数据结构。