0
タイトルが示唆しているように、でMySQLにテーブルを結合したいのですが、 DateTimeフィールドの行間の時間を計算できます。MySQL:自己結合表が1行分オフセットされている(T-SQL CTEとROW_NUMBER()が等しい)
T-SQLでは、これはROW_NUMBER()とCTEを使用して行われます。
タイトルが示唆しているように、でMySQLにテーブルを結合したいのですが、 DateTimeフィールドの行間の時間を計算できます。MySQL:自己結合表が1行分オフセットされている(T-SQL CTEとROW_NUMBER()が等しい)
T-SQLでは、これはROW_NUMBER()とCTEを使用して行われます。
row_numberは、変数を使用してmysqlでシミュレートできます。たとえば、与えられた MariaDB [sandbox]> select * from dates limit 10;
+------+------------+----------+------------------+-------------------+--------+
| id | dte | CalMonth | CalMonthDescLong | CalMonthDescShort | calQtr |
+------+------------+----------+------------------+-------------------+--------+
| 1 | 2000-01-01 | 1 | January | Jan | 1 |
| 2 | 2000-01-02 | 1 | January | Jan | 1 |
| 3 | 2000-01-03 | 1 | January | Jan | 1 |
| 4 | 2000-01-04 | 1 | January | Jan | 1 |
| 5 | 2000-01-05 | 1 | January | Jan | 1 |
| 6 | 2000-01-06 | 1 | January | Jan | 1 |
| 7 | 2000-01-07 | 1 | January | Jan | 1 |
| 8 | 2000-01-08 | 1 | January | Jan | 1 |
| 9 | 2000-01-09 | 1 | January | Jan | 1 |
| 10 | 2000-01-10 | 1 | January | Jan | 1 |
+------+------------+----------+------------------+-------------------+--------+
10 rows in set (0.00 sec)
このクエリ
select s.*
,t.dte,t.rownumber1
from
(
select d.*,@rn:[email protected]+1 rownumber from
(select @rn:=0) rn,dates d
) s
join
(
select d.*,@rn1:[email protected]+1 rownumber1 from
(select @rn1:=0) rn,dates d
) t on t.rownumber1 = s.rownumber + 1
limit 10
戻り
+-----------+------------+------------+
| id | dte | CalMonth | CalMonthDescLong | CalMonthDescShort | calQtr | rownumber | dte | rownumber1 |
+------+------------+----------+------------------+-------------------+--------+-----------+------------+------------+
| 1 | 2000-01-01 | 1 | January | Jan | 1 | 1 | 2000-01-02 | 2 |
| 2 | 2000-01-02 | 1 | January | Jan | 1 | 2 | 2000-01-03 | 3 |
| 3 | 2000-01-03 | 1 | January | Jan | 1 | 3 | 2000-01-04 | 4 |
| 4 | 2000-01-04 | 1 | January | Jan | 1 | 4 | 2000-01-05 | 5 |
| 5 | 2000-01-05 | 1 | January | Jan | 1 | 5 | 2000-01-06 | 6 |
| 6 | 2000-01-06 | 1 | January | Jan | 1 | 6 | 2000-01-07 | 7 |
| 7 | 2000-01-07 | 1 | January | Jan | 1 | 7 | 2000-01-08 | 8 |
| 8 | 2000-01-08 | 1 | January | Jan | 1 | 8 | 2000-01-09 | 9 |
| 9 | 2000-01-09 | 1 | January | Jan | 1 | 9 | 2000-01-10 | 10 |
| 10 | 2000-01-10 | 1 | January | Jan | 1 | 10 | 2000-01-11 | 11 |
+------+------------+----------+------------------+-------------------+--------+-----------+------------+------------+
10 rows in set (0.09 sec)
より良いあなたに合うかもしれないSO上の他の例の負荷があります。
データは代替方法を考慮してもよい。私はあなたのデータのサンプルと期待される結果を提供することをお勧めします。 –