该表包含以下列:
DATA,CODE等..
我需要显示两个不同的日期范围及其代码,如:
|数据|代码| DATA2 |代码|
我的查询是:
SELECT DATA,CODE
FROM people
WHERE DATA >= ${data1} AND DATA <= ${data2}
GROUP BY DATA
ORDER BY DATA
我所做的是尝试使用不同的变量进行2次查询,但两者都返回相同的数据范围。 所以我做了类似的事情:
SELECT DATA,CODE
FROM people
WHERE DATA >= ${d1} AND DATA <= ${d2}
GROUP BY DATA
ORDER BY DATA
并尝试分配4个不同的日期以获得2个周期范围。让我们想象data1='01-01-2001'
和data2='31-12-2001'
d1='01-01-2002'
和d2='31-12-2002'
。
当我分配日期时,两者都只返回最后一个范围。
所以我没有得到 | 2001 | code | 2002 | code | ,而是 | 2002 | code | 2002 | code |
我需要进行比较,所以我想比较左边的2001年的每一天和右边的2002年的每一天。
答案 0 :(得分:0)
使用绑定变量:start1
和:end1
作为第一个范围的边界,使用:start2
和:end2
作为第二个范围的边界:
SELECT d1.data AS data1,
d1.code AS code1,
d2.data AS data2,
d2.code AS code2
FROM (
SELECT data,
code,
ROW_NUMBER() OVER ( ORDER BY data ) AS rn
FROM people
WHERE data BETWEEN :start1 AND :end1
) d1
FULL OUTER JOIN
(
SELECT data,
code,
ROW_NUMBER() OVER ( ORDER BY data ) AS rn
FROM people
WHERE data BETWEEN :start2 AND :end2
) d2
ON ( d1.rn = d2.rn )