这是基于前一个Merge two tables without common column in sql的启发/基础。
如果条件更差,即我们在表B中没有该帖子的列endNumber
怎么办?对于我的情况,我有表A
,并且我没有表A
的每个orgStatus的endTime。我们知道第二个orgStatus的startedTime实际上是第一个orgStatus的结束时间。
+-------+-----------+----------------------+
| orgId | orgStatus | startedTime |
+-------+-----------+----------------------+
| 1 | 1 | 2011-12-14 09:25:21 |
| 1 | 2 | 2011-12-14 10:26:21 |
| 1 | 3 | 2011-12-14 11:27:21 |
| 1 | 4 | 2011-12-14 12:25:21 |
| 2 | 1 | 2011-12-14 10:26:21 |
| 2 | 2 | 2011-12-14 10:50:21 |
| 2 | 3 | 2011-12-14 11:28:21 |
| 2 | 4 | 2011-12-14 15:25:21 |
+-------+-----------+----------------------+
以上是表格A
,表格B
如下。
+-------+-----------+----------------------+
| orgId | eventid | createdTime |
+-------+-----------+----------------------+
| 1 | id1 | 2011-12-14 09:26:21 |
| 1 | id2 | 2011-12-14 10:27:21 |
| 2 | id3 | 2011-12-14 10:27:22 |
| 2 | id4 | 2011-12-14 10:51:21 |
| 1 | id5 | 2011-12-14 11:28:21 |
| 2 | id6 | 2011-12-14 11:29:21 |
| 1 | id7 | 2011-12-14 12:26:21 |
| 2 | id8 | 2011-12-14 15:26:21 |
+-------+-----------+----------------------+
期望的结果应该是
+-------+-----------+-----------+
| orgId | orgStatus | eventCount|
+-------+-----------+-----------+
| 1 | 1 | 1 |
| 1 | 2 | 1 |
| 1 | 3 | 1 |
| 1 | 4 | 1 |
| 2 | 1 | 1 |
| 2 | 2 | 1 |
| 2 | 3 | 1 |
| 2 | 4 | 1 |
+-------+-----------+-----------+
要将event
分配给正确的orgId
,orgStatus
,我认为将这两个表加入相同的orgId
,而另一个条件很复杂。事件的createdTime
应该在相应startedTime
的两个orgStatus
之间。对于每个orgStatus
的最后orgId
,我们只检查event
是否在createdTime
的{{1}}之后创建。
我想为表orgStatus
创建一个列endedTime
,但是如何输入不在同一行的信息(我们需要的信息在下一行)。
所以我想到的第一步是修改表A
,如下所示,
A
我被困在这里,我怎样才能获得不在同一行的信息。
答案 0 :(得分:0)
感谢@Barmar的评论。 我自己会解决这个问题。
Fisrt,我使用新列<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:orientation="horizontal"
>
<RadioButton
android:id="@+id/radioButton_plumber"
android:layout_width="104dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:onClick="onRadioButtonClicked"
android:text="Plumber"
/>
<RadioButton
android:id="@+id/radioButton_carpenter"
android:layout_width="104dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:onClick="onRadioButtonClicked"
android:text="Carpenter"
/>
<RadioButton
android:id="@+id/radioButton_electrician"
android:layout_width="104dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:onClick="onRadioButtonClicked"
android:text="Electrician"
/>
</RadioGroup>
</android.support.constraint.ConstraintLayout>
修改表A
。查询如下,
endedTime
上面的查询创建了最后一个表,然后我们可以在select a.orgId as orgId,
a.orgStatus as orgStatus,
a.startedTime as startedTime,
ifnull(b.startedTime, '2030-01-01 00:00:00') as endedTime
from A as a
left join A as b
on a.orgId = b.orgId and a.orgStatus = b.orgStatus - 1
order by orgId, orgStatus
和B
之间orgId
和createdTime
之间加入表startedTime
的新表。
完整的解决方案如下,
endedTime
给出了所需的表格。