我有一个列L3
,如下所示。
L3
---
4
6
现在我想将这两行显示为列,如下所示:
L3 L4
-- --
4 6
请忽略所涉及的任何聚合函数来比较这些数据,因为它们不是任何顺序,数值可能会间歇性地更改。
答案 0 :(得分:1)
让我们说你只想交替。我会使用LAG()函数来获取先前的行值并跳过行......就像这样
SELECT L3, L4
FROM (
SELECT LAG(L3) AS L3, L3 AS L4, ROW_NUMBER() OVER () AS RN
FROM A_TABLE_YOU_NAME
)
WHERE RN % 2 = 0
SQL Server可能会对没有LAG()的订购感到不满,所以你必须给出一些订单 - 但如果你不在乎只是使用一些东西。确保使用LAG()和ROW_NUMBER()的顺序,否则您将获得“有趣”的结果。
如果您没有LAG()
WITH numbered as (
SELECT L3, ROW_NUMBER() OVER () AS RN
FROM A_TABLE_YOU_NAME
)
SELECT B.L3 AS L3, A.L3 AS L4
FROM numbered A
JOIN numbered B ON A.RN = B.RN+1
WHERE A.RN % 2 = 0