我有一个查询显示客户从table_1完成的第一次预订。为了找到下一个预订,我认为我对table_1使用相同的查询,并且它不能包含在我的第一个查询中。
每个预订都可以通过身份证明来识别。我首先想到我可以这样做:[STACKOVERFLOW HELP] [1]。我搜索了这个主题,但没有找到答案。也许是因为我使用了错误的短语。请参阅下面的示例以便更好地理解。
TABLE_1(包括所有数据):
ID BV CLIENT Booking_DATE
1 2 1 01.01.2017
2 35 2 02.01.2017
3 1 3 03.01.2017
4 24 4 04.01.2017
5 1 5 05.01.2017
6 3 3 06.01.2017
7 19 4 07.01.2017
8 523 5 08.01.2017
9 23 4 09.01.2017
10 12 5 10.01.2017
11 51 4 11.01.2017
12 12 5 12.01.2017
13 5 6 13.01.2017
表1a - 仅包括第一次预订(每位客户):
ID BV CLIENT Booking_DATE
1 2 1 01.01.2017
2 35 2 02.01.2017
3 1 3 03.01.2017
4 24 4 04.01.2017
5 1 5 05.01.2017
13 5 6 13.01.2017
表1b - 包含table1 WITHOUT table1a的所有表。
ID BV CLIENT Booking_DATE
6 3 3 06.01.2017
7 19 4 07.01.2017
8 523 5 08.01.2017
9 23 4 09.01.2017
10 12 5 10.01.2017
11 51 4 11.01.2017
12 12 5 12.01.2017
有什么想法吗?从表1b开始,我想再次进行“第一次预订”,因此基本上我正在寻找来自table1a的人们第一次重新预订。
谢谢!
Table1a的完整查询如下所示(上面我刚刚提供了一个了解逻辑的示例):
选择s_aufgaben
。ID
AS ID
,s_aufgaben
。AN_ID
AS USER
,s_aufgaben
。{{1} } AS BEN_ID
,BUSINESS
。s_aufgaben
,ERLEDIGT_DATUM
。s_aufgaben
,Gesamtbetragnetto
。s_aufgaben
,SET_DATE
。 s_benutzer_auftragnehmer
来自REGISTRATION_DATE
正确加入s_aufgaben
开启(s_benutzer_auftragnehmer
。s_aufgaben
= AN_ID
。s_benutzer_auftragnehmer
)
WHERE((({BEN_ID
。s_aufgaben
> 0)AND(AN_ID
。s_aufgaben
='3'))AND(status
。{{1 }}>'0000-00-00 00:00:00'))和(s_aufgaben
。ERLEDIGT_DATUM
<>'41385.00'))
按s_aufgaben
分组
ORDER BY BEN_ID
。USER
asc
[1]:How to select all records from one table that do not exist in another table? s_aufgaben
答案 0 :(得分:0)
这可能有助于你
;WITH Table1a(ID,BV,CLIENT,Booking_DATE)
AS
(
SELECT 1 , 2 , 1 , '01.01.2017' Union all
SELECT 2 , 35 , 2 , '02.01.2017' Union all
SELECT 3 , 1 , 3 , '03.01.2017' Union all
SELECT 4 , 24 , 4 , '04.01.2017' Union all
SELECT 5 , 1 , 5 , '05.01.2017' Union all
SELECT 13, 5 , 6, '13.01.2017'
)
,Table1b (ID, BV, CLIENT, Booking_DATE)
AS
(
SELECT 6 , 3 , 3 ,'06.01.2017' union all
SELECT 7 , 19 , 4 ,'07.01.2017' union all
SELECT 8 , 523, 5 ,'08.01.2017' union all
SELECT 9 , 23 , 4 ,'09.01.2017' union all
SELECT 10, 12 , 5 ,'10.01.2017' union all
SELECT 11, 51 , 4 ,'11.01.2017' union all
SELECT 12, 12 , 5 ,'12.01.2017'
)
SELECT * from Table1a A
WHERE NOT EXISTS (SELECT 1 From Table1b B WHERE B.CLIENT=A.CLIENT)
答案 1 :(得分:0)
您是否正在寻找以下内容:
select * from table_1 --Better to provide exact column list in sequence
except
select * from table1a --Follow the same sequence here as well
输出如下:
+----+-----+--------+--------------+
| id | bv | client | booking_date |
+----+-----+--------+--------------+
| 6 | 3 | 3 | 2017-01-06 |
| 7 | 19 | 4 | 2017-01-07 |
| 8 | 523 | 5 | 2017-01-08 |
| 9 | 23 | 4 | 2017-01-09 |
| 10 | 12 | 5 | 2017-01-10 |
| 11 | 51 | 4 | 2017-01-11 |
| 12 | 12 | 5 | 2017-01-12 |
+----+-----+--------+--------------+