【问题标题】:Need to get the output as positive and negative numbers from one column into different columns from a table?需要将输出作为正数和负数从一列获取到表中的不同列?
【发布时间】:2014-01-03 06:08:59
【问题描述】:

我需要针对以下场景的解决方案:

表A

col1
2
4
-6
-5
4
-2
5
2

上表A是我的来源,我希望输出为:

Positive      Negative
2              -6
4              -5
4              -2
5
2

我得到的输出如下:

Positive      Negative
2              NULL
4              NULL
4              NULL
5              NULL
2              NULL
NULL           -6
NULL           -5
NULL           -2

这是我尝试过的查询:

SELECT pos.col2 AS 'Positive',neg.col2 AS 'negative'
FROM
(SELECT col2 FROM colum1 WHERE col2 < 0) neg FULL OUTER JOIN
(SELECT col2 FROM colum1 WHERE col2 > 0) pos
ON pos.col2 = neg.col2

【问题讨论】:

标签: sql sql-server join multiple-columns


【解决方案1】:

试试这个 -

DECLARE @temp TABLE (col INT)

INSERT INTO @temp (col)
VALUES (2), (4), (-6), (-5), (4), (-2), (5), (2)

SELECT Positive, Negative 
FROM (
    SELECT Positive = col, RowNum = ROW_NUMBER() OVER (ORDER BY 1/0) 
    FROM @temp
    WHERE col >= 0
) t
FULL JOIN (
    SELECT Negative = col, RowNum = ROW_NUMBER() OVER (ORDER BY 1/0)  
    FROM @temp
    WHERE col < 0
) t2 on t.RowNum = t2.RowNum

输出 -

Positive    Negative
----------- -----------
2           -6
4           -5
4           -2
5           NULL
2           NULL

【讨论】:

  • 嗨,Devart,我确实得到了所需的输出,但你能解释一下 ORDER BY 1/0 的作用吗?
  • ROW_NUMBER() OVER (ORDER BY 1/0) - 禁止排序行
猜你喜欢
  • 1970-01-01
  • 2017-06-01
  • 2022-12-31
  • 1970-01-01
  • 2012-03-21
  • 2021-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多