我有这样的事情:
C1 C2
1 -1
2 -2
3 -3
4 -4
我想要一个像这样的输出:
values
1
-5
10
-9
15
-3
8
-11
12
-17
任何人都可以帮我编写查询以在T-SQL中获取此输出吗?
如果有这样的话会怎么样:
function updater() {
this.updater = setTimeout(async function() {
let data = await updatingFromInternet(url);
updater();
}, 5000);
}
我必须制作两列,将一列中的正值与另一列中的负值分开。
答案 0 :(得分:1)
您可以使用聚合:
select max(col1), min(col1)
from t
group by abs(col1);
答案 1 :(得分:0)
这将做你想要的......一个简单的自我加入
create table test1
(
col1 int not null
)
insert into test1 (col1) values (1)
insert into test1 (col1) values (2)
insert into test1 (col1) values (3)
insert into test1 (col1) values (4)
insert into test1 (col1) values (-1)
insert into test1 (col1) values (-2)
insert into test1 (col1) values (-3)
insert into test1 (col1) values (-4)
select a.col1 C1, b.col1 C2 from test1 a
join test1 b on a.col1 = -b.col1
where a.col1 > 0
答案 2 :(得分:0)
您必须自己JOIN
表格然后限制结果,以便从第一列中排除负数
SELECT t1.Col1 c1, t2.Col1 c2 FROM tbl t1
JOIN tbl t2 ON t1.Col1 = t2.Col1*-1 AND t1.Col1 > 0
回答第二个问题:
想法是分别选择正数和负数,然后对其行号进行FULL OUTER JOIN
。
SELECT t1.Col1 c1, t2.Col1 c2 FROM (
SELECT t11.Col1,
ROW_NUMBER() OVER(ORDER BY t11.Col1 ASC) rn
FROM tbl t11
WHERE t11.Col1 > 0
) t1 FULL JOIN (
SELECT t22.Col1,
ROW_NUMBER() OVER(ORDER BY t22.Col1 DESC) rn
FROM tbl t22
WHERE t22.Col1 < 0
) t2 ON t2.rn = t1.rn;
示例:
CREATE TABLE tbl ( Col1 int );
INSERT INTO tbl VALUES (6), (7), (-4), (1), (-2), (3), (5);
-- RESULT
| c1 | c2 |
|----|--------|
| 1 | -2 |
| 3 | -4 |
| 5 | (null) |
| 6 | (null) |
| 7 | (null) |
答案 3 :(得分:0)
SELECT t1.col1 as C1, t2.col1 AS C2 FROM tbl t1 JOIN tbl t2 ON t1.col1 = (t2.col1 * -1) WHERE t1.col1 > 0 GO
C1 | C2 -: | -: 1 | -1 2 | -2 3 | -3 4 | -4
dbfiddle here
答案 4 :(得分:0)
您可以使用分析函数ROW_NUMBER()加入两个查询的值:
df_monthly.index.set_names(('Year','Month', 'Week', 'Dayofweek'))