我的数据库表格如下所示
IDCol Col1 Col2 Col3
ID1 1 3 1000
ID1 6 6 1000
ID2 3 4 500
ID2 1 7 500
我需要输出如下
IDCol Col1 Col2 Col3
ID1 1 6 1000
ID2 3 7 500
我是否有可能使用SQL获得上述所需的输出格式? 我是SQL的新手,有人可以帮帮我吗?非常感谢你!
答案 0 :(得分:2)
根据您的样本数据,我相信您正在寻找:
SELECT IDCol
, MIN(Col1) AS [Col1]
, MAX(Col2) AS [Col2]
, Col3
FROM Table
GROUP BY IDCol
, Col3
根据您评论中的信息,如果您添加行号列,则其中一个解决方案将采用以下形式:
select t1.idcol
, t1.col1
, t2.col2
, t1.col3
from
(select idcol
, min(rn) over (partition by idcol) first_val
, max(rn) over (partition by idcol) last_val
from table
group by idcol, rn) r
inner join table t1 on r.first_val = t1.rn
and r.idcol = t1.idcol
inner join table t2 on r.last_val = t2.rn
and r.idcol = t2.idcol
group by t1.idcol
, t1.col1
, t2.col2
, t1.col3
在示例数据上运行示例代码:
declare @tbl table (rn int identity(1,1), idcol varchar(4), col1 int, col2 int, col3 int)
insert @tbl values ('id1', 1, 3, 1000)
, ('id1', 6, 6, 1000)
, ('id2', 3, 4, 500)
, ('id2', 1, 7, 500);
select t1.idcol
, t1.col1
, t2.col2
, t1.col3
from
(select idcol
, min(rn) over (partition by idcol) first_val
, max(rn) over (partition by idcol) last_val
from @tbl
group by idcol, rn) r
inner join @tbl t1 on r.first_val = t1.rn
and r.idcol = t1.idcol
inner join @tbl t2 on r.last_val = t2.rn
and r.idcol = t2.idcol
group by t1.idcol
, t1.col1
, t2.col2
, t1.col3
答案 1 :(得分:1)
使用<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
(2012年支持)尝试的另一种方式:
LEAD
答案 2 :(得分:-1)
我认为您必须为此任务指定抽象级别。您可以使用许多语句来实现此输出。问题是数据行代表什么以及为什么要求预期的输出。