返回第二个客户端访问日期的SQL
我有客户第一次拜访的日期。我想在一个新的专栏中,返回他们第二次访问的日期——他们第一次访问之后第二次访问的日期返回第二个客户端访问日期的SQL,sql,sql-server,date,Sql,Sql Server,Date,我有客户第一次拜访的日期。我想在一个新的专栏中,返回他们第二次访问的日期——他们第一次访问之后第二次访问的日期 Client_no First_Visit Receipt_no TransactionDate **1020634 2/24/2014 0:00 1350436 3/8/2014** 1020634 2/24/2014 0:00 1350530 3/9/2014 1020634 2/24/2014 0:00 1350760
Client_no First_Visit Receipt_no TransactionDate
**1020634 2/24/2014 0:00 1350436 3/8/2014**
1020634 2/24/2014 0:00 1350530 3/9/2014
1020634 2/24/2014 0:00 1350760 3/10/2014
1020634 2/24/2014 0:00 1350891 3/11/2014
1020635 2/24/2014 0:00 1347544 2/24/2014
1020635 2/24/2014 0:00 1347551 2/24/2014
1020636 2/24/2014 0:00 1347553 2/24/2014
1020636 2/24/2014 0:00 1347555 2/24/2014
1020636 2/24/2014 0:00 1347554 2/24/2014
**1020636 2/24/2014 0:00 1348904 3/1/2014**
1020636 2/24/2014 0:00 1349662 3/5/2014
1020637 2/24/2014 0:00 1347596 2/24/2014
**1020637 2/24/2014 0:00 1348073 2/26/2014**
1020638 2/25/2014 0:00 1347690 2/25/2014
1020638 2/25/2014 0:00 1355142 3/22/2014
1020638 2/25/2014 0:00 1355132 3/22/2014
1020639 2/25/2014 0:00 1347749 2/25/2014
**1020639 2/25/2014 0:00 641852 2/26/2014**
1020639 2/25/2014 0:00 641846 2/26/2014
1020639 2/25/2014 0:00 641966 2/27/2014
*****=该客户的第二次访问
Client_no First_Visit Receipt_no TransactionDate
**1020634 2/24/2014 0:00 1350436 3/8/2014**
1020634 2/24/2014 0:00 1350530 3/9/2014
1020634 2/24/2014 0:00 1350760 3/10/2014
1020634 2/24/2014 0:00 1350891 3/11/2014
1020635 2/24/2014 0:00 1347544 2/24/2014
1020635 2/24/2014 0:00 1347551 2/24/2014
1020636 2/24/2014 0:00 1347553 2/24/2014
1020636 2/24/2014 0:00 1347555 2/24/2014
1020636 2/24/2014 0:00 1347554 2/24/2014
**1020636 2/24/2014 0:00 1348904 3/1/2014**
1020636 2/24/2014 0:00 1349662 3/5/2014
1020637 2/24/2014 0:00 1347596 2/24/2014
**1020637 2/24/2014 0:00 1348073 2/26/2014**
1020638 2/25/2014 0:00 1347690 2/25/2014
1020638 2/25/2014 0:00 1355142 3/22/2014
1020638 2/25/2014 0:00 1355132 3/22/2014
1020639 2/25/2014 0:00 1347749 2/25/2014
**1020639 2/25/2014 0:00 641852 2/26/2014**
1020639 2/25/2014 0:00 641846 2/26/2014
1020639 2/25/2014 0:00 641966 2/27/2014
工作
排名高于分区才是关键。按b划分的排名。按日期划分没有顺序,a、 最后一次ASC访问中,我删除了所有与第一次访问相同的日期,以避免排名加倍和从1跳到3 查询
Client_no First_Visit Receipt_no TransactionDate
**1020634 2/24/2014 0:00 1350436 3/8/2014**
1020634 2/24/2014 0:00 1350530 3/9/2014
1020634 2/24/2014 0:00 1350760 3/10/2014
1020634 2/24/2014 0:00 1350891 3/11/2014
1020635 2/24/2014 0:00 1347544 2/24/2014
1020635 2/24/2014 0:00 1347551 2/24/2014
1020636 2/24/2014 0:00 1347553 2/24/2014
1020636 2/24/2014 0:00 1347555 2/24/2014
1020636 2/24/2014 0:00 1347554 2/24/2014
**1020636 2/24/2014 0:00 1348904 3/1/2014**
1020636 2/24/2014 0:00 1349662 3/5/2014
1020637 2/24/2014 0:00 1347596 2/24/2014
**1020637 2/24/2014 0:00 1348073 2/26/2014**
1020638 2/25/2014 0:00 1347690 2/25/2014
1020638 2/25/2014 0:00 1355142 3/22/2014
1020638 2/25/2014 0:00 1355132 3/22/2014
1020639 2/25/2014 0:00 1347749 2/25/2014
**1020639 2/25/2014 0:00 641852 2/26/2014**
1020639 2/25/2014 0:00 641846 2/26/2014
1020639 2/25/2014 0:00 641966 2/27/2014
使用ALTERTABLE命令在数据库中添加列。请参阅数据库提供程序的文档
Client_no First_Visit Receipt_no TransactionDate
**1020634 2/24/2014 0:00 1350436 3/8/2014**
1020634 2/24/2014 0:00 1350530 3/9/2014
1020634 2/24/2014 0:00 1350760 3/10/2014
1020634 2/24/2014 0:00 1350891 3/11/2014
1020635 2/24/2014 0:00 1347544 2/24/2014
1020635 2/24/2014 0:00 1347551 2/24/2014
1020636 2/24/2014 0:00 1347553 2/24/2014
1020636 2/24/2014 0:00 1347555 2/24/2014
1020636 2/24/2014 0:00 1347554 2/24/2014
**1020636 2/24/2014 0:00 1348904 3/1/2014**
1020636 2/24/2014 0:00 1349662 3/5/2014
1020637 2/24/2014 0:00 1347596 2/24/2014
**1020637 2/24/2014 0:00 1348073 2/26/2014**
1020638 2/25/2014 0:00 1347690 2/25/2014
1020638 2/25/2014 0:00 1355142 3/22/2014
1020638 2/25/2014 0:00 1355132 3/22/2014
1020639 2/25/2014 0:00 1347749 2/25/2014
**1020639 2/25/2014 0:00 641852 2/26/2014**
1020639 2/25/2014 0:00 641846 2/26/2014
1020639 2/25/2014 0:00 641966 2/27/2014
然后,必须将写入此数据库的应用程序更改为写入新列,而不是表中的新行
Client_no First_Visit Receipt_no TransactionDate
**1020634 2/24/2014 0:00 1350436 3/8/2014**
1020634 2/24/2014 0:00 1350530 3/9/2014
1020634 2/24/2014 0:00 1350760 3/10/2014
1020634 2/24/2014 0:00 1350891 3/11/2014
1020635 2/24/2014 0:00 1347544 2/24/2014
1020635 2/24/2014 0:00 1347551 2/24/2014
1020636 2/24/2014 0:00 1347553 2/24/2014
1020636 2/24/2014 0:00 1347555 2/24/2014
1020636 2/24/2014 0:00 1347554 2/24/2014
**1020636 2/24/2014 0:00 1348904 3/1/2014**
1020636 2/24/2014 0:00 1349662 3/5/2014
1020637 2/24/2014 0:00 1347596 2/24/2014
**1020637 2/24/2014 0:00 1348073 2/26/2014**
1020638 2/25/2014 0:00 1347690 2/25/2014
1020638 2/25/2014 0:00 1355142 3/22/2014
1020638 2/25/2014 0:00 1355132 3/22/2014
1020639 2/25/2014 0:00 1347749 2/25/2014
**1020639 2/25/2014 0:00 641852 2/26/2014**
1020639 2/25/2014 0:00 641846 2/26/2014
1020639 2/25/2014 0:00 641966 2/27/2014
如果希望查询结果为新列,可以使用“自动联接”。例如:需要改进才能返回您想要的内容
Client_no First_Visit Receipt_no TransactionDate
**1020634 2/24/2014 0:00 1350436 3/8/2014**
1020634 2/24/2014 0:00 1350530 3/9/2014
1020634 2/24/2014 0:00 1350760 3/10/2014
1020634 2/24/2014 0:00 1350891 3/11/2014
1020635 2/24/2014 0:00 1347544 2/24/2014
1020635 2/24/2014 0:00 1347551 2/24/2014
1020636 2/24/2014 0:00 1347553 2/24/2014
1020636 2/24/2014 0:00 1347555 2/24/2014
1020636 2/24/2014 0:00 1347554 2/24/2014
**1020636 2/24/2014 0:00 1348904 3/1/2014**
1020636 2/24/2014 0:00 1349662 3/5/2014
1020637 2/24/2014 0:00 1347596 2/24/2014
**1020637 2/24/2014 0:00 1348073 2/26/2014**
1020638 2/25/2014 0:00 1347690 2/25/2014
1020638 2/25/2014 0:00 1355142 3/22/2014
1020638 2/25/2014 0:00 1355132 3/22/2014
1020639 2/25/2014 0:00 1347749 2/25/2014
**1020639 2/25/2014 0:00 641852 2/26/2014**
1020639 2/25/2014 0:00 641846 2/26/2014
1020639 2/25/2014 0:00 641966 2/27/2014
Select c.Client_no, c.First_Visit, c.ticket_no, c.Date Second_Visit
From (Select b.Client_no,b.First_Visit, a.ticket_no,
Convert(date,a.Last_Mdt) Date, RANK () OVER (PARTITION BY b.client_no ORDER BY
Convert(date,a.Last_Mdt) ASC)Visit
From Transactions_01 a
RIGHT JOIN (SELECT Client_no, Convert(date,first_Visit)First_Visit FROM Clients
Where First_Visit > DATEADD(D,-31,GETDATE())) b on a.client_no = b.client_no
Where a.Last_Mdt > DATEADD(D,-31,GETDATE()) AND Convert(date,a.Last_Mdt)
<> B.First_Visit AND A.Status=1
Group By b.Client_no,b.First_Visit, a.ticket_no, Convert(date,a.Last_Mdt) ) c
WHERE Visit =1 Order By c.Client_no,c.Date
如果您的数据库提供程序支持,则可以将concate与组一起使用。例如,对于mysql:
Client_no First_Visit Receipt_no TransactionDate
**1020634 2/24/2014 0:00 1350436 3/8/2014**
1020634 2/24/2014 0:00 1350530 3/9/2014
1020634 2/24/2014 0:00 1350760 3/10/2014
1020634 2/24/2014 0:00 1350891 3/11/2014
1020635 2/24/2014 0:00 1347544 2/24/2014
1020635 2/24/2014 0:00 1347551 2/24/2014
1020636 2/24/2014 0:00 1347553 2/24/2014
1020636 2/24/2014 0:00 1347555 2/24/2014
1020636 2/24/2014 0:00 1347554 2/24/2014
**1020636 2/24/2014 0:00 1348904 3/1/2014**
1020636 2/24/2014 0:00 1349662 3/5/2014
1020637 2/24/2014 0:00 1347596 2/24/2014
**1020637 2/24/2014 0:00 1348073 2/26/2014**
1020638 2/25/2014 0:00 1347690 2/25/2014
1020638 2/25/2014 0:00 1355142 3/22/2014
1020638 2/25/2014 0:00 1355132 3/22/2014
1020639 2/25/2014 0:00 1347749 2/25/2014
**1020639 2/25/2014 0:00 641852 2/26/2014**
1020639 2/25/2014 0:00 641846 2/26/2014
1020639 2/25/2014 0:00 641966 2/27/2014
SELECT t1.Client_no, t1.First_Visit, t1.Receipt_no, t1.TransactionDate, t2.First_Visit
FROM my_log_table t1, my_log_table t2
WHERE t1.Client_no = t2.Client_no
此解决方案还需要改进以满足您的需要。您使用的是哪种DBMS?博士后?Oracle?@a_horse_和_no_name SQL Server MSQ询问代码的问题必须显示出最小的努力。在问题本身中张贴你的尝试。排名高于分区成功了。按b排列分区。按Convertdate排列客户端。按Convertdate排列无顺序,按a。最后一次\u Mdt ASC访问IT wait wait wait wait wait。你不是在用**存储数据吧?如果他最终需要其他访问怎么办?此表最终可能会有几十个空N_Visit列,这是一个糟糕的设计。请求是一个新列。但你是对的,也许这是一个查询的新结果列。我会编辑是的,一个新的结果栏。事实上,我不能直接坐任何桌子。
Client_no First_Visit Receipt_no TransactionDate
**1020634 2/24/2014 0:00 1350436 3/8/2014**
1020634 2/24/2014 0:00 1350530 3/9/2014
1020634 2/24/2014 0:00 1350760 3/10/2014
1020634 2/24/2014 0:00 1350891 3/11/2014
1020635 2/24/2014 0:00 1347544 2/24/2014
1020635 2/24/2014 0:00 1347551 2/24/2014
1020636 2/24/2014 0:00 1347553 2/24/2014
1020636 2/24/2014 0:00 1347555 2/24/2014
1020636 2/24/2014 0:00 1347554 2/24/2014
**1020636 2/24/2014 0:00 1348904 3/1/2014**
1020636 2/24/2014 0:00 1349662 3/5/2014
1020637 2/24/2014 0:00 1347596 2/24/2014
**1020637 2/24/2014 0:00 1348073 2/26/2014**
1020638 2/25/2014 0:00 1347690 2/25/2014
1020638 2/25/2014 0:00 1355142 3/22/2014
1020638 2/25/2014 0:00 1355132 3/22/2014
1020639 2/25/2014 0:00 1347749 2/25/2014
**1020639 2/25/2014 0:00 641852 2/26/2014**
1020639 2/25/2014 0:00 641846 2/26/2014
1020639 2/25/2014 0:00 641966 2/27/2014