如何在SQL Server中将两行合并为一行
我正在尝试编写一个SQL查询,其思想是将两行合并为一行。 表演时如何在SQL Server中将两行合并为一行,sql,sql-server,Sql,Sql Server,我正在尝试编写一个SQL查询,其思想是将两行合并为一行。 表演时 select * from caixa 我得到以下结果: id money open closed fun type situation -------------------------------------------------------------------- 13 10 08/09/2018 18:55
select * from caixa
我得到以下结果:
id money open closed fun type situation
--------------------------------------------------------------------
13 10 08/09/2018 18:55 1 E 1
37 -473 09/09/2018 17:01 1 F 1
40 0 09/09/2018 17:08 1 E 2
41 0 10/09/2018 17:09 1 F 2
其想法是在情况相同的情况下将两行连接起来
例如:
money open closed fun type situation
--------------------------------------------------------------------
-473 08/09/2018 18:55 09/09/2018 17:01 1 E 1
您可以尝试使用聚合函数来实现它
SELECT MIN(money) as money ,MAX(open) as open,
MAX(closed) as closed,fun,MIN(type) as type,
MIN(situation) as situation
FROM caixa
GROUP BY fun
试着把桌子和它自己连接起来
SELECT O.money as open_money, C.money as closed_money,
O.open as open, C.closed as closed,
O.fun as open_fun, C.fun as closed_fun,
O.type as open_type, C.type as closed_type
FROM caixa O, caixa C
WHERE O.id <> C.id
AND O.situation = C.situation
AND O.open IS NOT NULL
AND C.closed IS NOT NULL
选择O.money作为开放式货币,选择C.money作为封闭式货币,
O.打开为打开,C.关闭为关闭,
O.fun为开放式,C.fun为封闭式,
O型为开放型,C型为封闭型
来自caixa O,caixa C
O.id C.id在哪里
O.情况=C.情况
并且O.open不是空的
C.closed不为空
这甚至有效,但我不想将日期与max进行比较,如果它不同于empty,我必须做些什么才能得到它?如果有许多不同的日期,您想做什么MAX
可以过滤空字符串或NULL
然后获取值您需要指定如何在按情况
分组时聚合其他列(money
、fun
和type
)。是否有多行具有相同的情况
值?