【发布时间】:2021-09-16 15:00:07
【问题描述】:
问题:
获取具有 type='Onsite Repair' 的记录以及具有 仅当同一日期同一 Act_ID 中还存在 Type='Travel' 的行时,才键入('Calibration'、'Interface Troubleshooting'、'Setup/Configuration'、'Customer Applications')。否则忽略。 (应始终显示现场维修类型的记录)
Type = "现场维修" 要么 Type = ("Calibration", "Interface Troubleshooting", "Setup/Configuration","Customer Applications") 仅当在同一日期同一 Act_ID 中还存在 Type="Travel" 的行时。否则忽略类型。
- 来源数据
| ACT_ID | TYPE | START_TS | END_TS |
|---|---|---|---|
| ACTID1 | Travel | 7/20/2016 13:00 | 7/20/2016 15:30 |
| ACTID1 | Interface Troubleshooting | 7/20/2016 15:30 | 7/20/2016 19:00 |
| ACTID1 | Travel | 7/20/2016 19:00 | 7/20/2016 21:00 |
| ACTID1 | Travel | 9/20/2016 13:00 | 9/20/2016 15:30 |
| ACTID1 | Onsite Repair | 9/20/2016 15:30 | 9/20/2016 23:30 |
| ACTID1 | Travel | 9/21/2016 13:00 | 9/21/2016 15:30 |
| ACTID1 | Onsite Repair | 9/21/2016 15:30 | 9/21/2016 23:30 |
| ACTID1 | Travel | 9/22/2016 13:00 | 9/22/2016 15:30 |
| ACTID1 | Onsite Repair | 9/22/2016 15:30 | 9/22/2016 23:30 |
- 预期数据
| ACT_ID | TYPE | START_TS | END_TS |
|---|---|---|---|
| ACTID1 | Interface Troubleshooting | 7/20/2016 15:30 | 7/20/2016 19:00 |
| ACTID1 | Onsite Repair | 9/20/2016 15:30 | 9/20/2016 23:30 |
| ACTID1 | Onsite Repair | 9/21/2016 15:30 | 9/21/2016 23:30 |
| ACTID1 | Onsite Repair | 9/22/2016 15:30 | 9/22/2016 23:30 |
【问题讨论】:
-
到目前为止你尝试过什么?你知道怎么做吗:获取 type='Onsite Repair' 的记录以及 Type in ('Calibration', 'Interface Troubleshooting', 'Setup/Configuration', '客户应用')
-
嗨@Nick.McDermaid,我在下面写了查询及其工作,但我正在寻找更简单的查询而不是执行自联接。 SELECT * FROM WHERE TYPE = 'Onsite Repair' UNION SELECT * FROM TABLE A INNER JOIN TABLE B ON A.ACT_ID = B.ACT_ID WHERE A.PROJ_NAM IN ('Calibration', 'Interface Troubleshooting', 'Setup/Configuration', '客户应用') AND B.TYPE='旅行' AND CAST(A.START_TS AS DATE FORMAT 'YYYY-MM-DD') = CAST(B.START_TS AS DATE FORMAT 'YYYY-MM-DD');跨度>
标签: sql teradata teradata-sql-assistant scenarios teradatasql