因此,我尝试根据我的一个列的结果创建一个新列,但在根据我的一些当前结果及其条件创建新列时遇到了问题。
我的数据现在是这样的-
| 人数|姓名|日期|现况|
| - ------|- ------|- ------|- ------|
| 小行星一七八九|布兰登|二○二一年十二月二十日|待定|
| 小行星一七八九|布兰登|二○二一年十二月二十二日|核准|
| 小行星1553|杰克|2021年5月10日|核准|
| 小行星1553|杰克|2021年11月10日|取消|
| 一九九七年|史密斯|2021年8月9日|核准|
| 一九九七年|史密斯|2021年9月11日|转移|
| 1338|詹姆斯|2021年5月11日|核准|
| 1338|詹姆斯|2021年11月10日|取消|
| 一九九四年|施蒂希|2021年8月9日|待定|
| 一九九四年|施蒂希|2021年9月11日|核准|
| 小行星一七七八|勒鲁瓦|2021年8月9日|核准|
| 小行星一七七八|勒鲁瓦|2021年9月11日|转移|
这是我现在的密码
SELECT a.Number,
CASE WHEN a.Status = 'Approved' and a.Status = 'Canceled' or a.Status = 'Transferred'
THEN
(SELECT MAX(b.Name)
FROM Internal_Table b
WHERE a.Number = b.Number
AND b.Status != 'Canceled'
or b.Staus != 'Transfered'
HAVING MAX(b.Date)
)
ELSE a.Status END AS Final_Status,
a.Date,
a.Name
FROM Internal_Table a
我尝试实现的目标是创建一个新列,显示"Approved/Canceled"、"Approved/Transfered"。但仅当"Approved"日期后显示"Canceled"或"Transfered"状态时。我不太熟悉使用CASE,因此这是我当前的尝试。抱歉,造成任何混淆。这是我希望结果的外观=
| 人数|姓名|日期|现况|最终统计|
| - ------|- ------|- ------|- ------|- ------|
| 小行星一七八九|布兰登|二○二一年十二月二十日|待定||
| 小行星一七八九|布兰登|二○二一年十二月二十二日|核准||
| 小行星1553|杰克|2021年5月10日|核准|批准/取消|
| 小行星1553|杰克|2021年11月10日|取消|批准/取消|
| 一九九七年|史密斯|2021年8月9日|核准|批准/转移|
| 一九九七年|史密斯|2021年9月11日|转移|批准/转移|
| 1338|詹姆斯|2021年5月11日|核准|批准/取消|
| 1338|詹姆斯|2021年11月10日|取消|批准/取消|
| 一九九四年|施蒂希|2021年8月9日|待定||
| 一九九四年|施蒂希|2021年9月11日|核准||
| 小行星一七七八|勒鲁瓦|2021年8月9日|核准|批准/转移|
| 小行星一七七八|勒鲁瓦|2021年9月11日|转移|批准/转移|
1条答案
按热度按时间smdncfj31#
您应该从修复表开始,以便将日期存储为日期而不是字符串。
应该可以-