1

4列のテーブルを作成し、大量のdataIDで並べ替えました。

      ID           Type             Item                Date
   AU761201      12.37.47         121212322     2012-07-12 22:21:12
   AU761201      12.37.42         157856388     2012-05-12 23:21:05
   AU761201      12.37.42         164687782     2009-02-12 12:37:24
   BD871015      15.31.62         651564488     2007-10-25 15:12:23
   DU551023      19.35.14         048040408     2011-11-05 14:15:23
   DU551023      19.35.14         056505654     2011-11-04 23:23:23
      .              .                .                   .
      .              .                .                   .
      .              .                .                   .
      .              .                .                   .
      .              .                .                   .

私がやりたいのは、「ID」が24時間以内に2つの同一の商品(同じ「タイプ」番号)を購入したかどうかを調べ(例ではDU 551023)、これが当てはまるIDを分類することです。

私の脳は現在、このsomに対処することから出血しています。すべての助けに深く感謝します。

ありがとう!

4

3 に答える 3

2

MySQLの場合

SELECT T1.id
FROM TableName T1 INNER JOIN TableName T2 
   ON T1.id = T2.id AND T1.Type = T2.Type AND T1.Item > T2.Item
WHERE ABS(HOUR(TIMEDIFF(T1.date, T2.date))) <= 24

SQL サーバーの場合

SELECT T1.id
FROM TableName T1 INNER JOIN TableName T2 
   ON T1.id = T2.id AND T1.Type = T2.Type AND T1.Item > T2.Item
WHERE ABS(DATEDIFF(hh, T1.date, T2.date)) <= 24
于 2012-09-03T19:59:50.707 に答える
0

まず、このテーブルに一意のキー(レコードと区別するためのもの)が必要です。それがItemであると仮定します(そうでない場合は、T1.Item!= T2.Itemで変更します)。

select distinct T1.ID from Table T1, Table T2
where T1.ID = T2.ID and T1.Type = T2.Type 
  and Abs(T1.Date - T2.Date) < 1 and T1.Item != T2.Item
order by T1.ID
于 2012-09-03T19:57:24.560 に答える
0

そのSQLサーバーの場合、存在することでそれを行うことができます

SELECT DISTINCT
    a.ID
FROM    MyTable AS a
WHERE   EXISTS ( SELECT 1
             FROM   MyTable AS b
             WHERE  a.ID = b.ID
                    AND a.TYPE = b.Type
                    AND ABS(DATEDIFF(hour, a.Date, b.Date)) <= 24 )
ORDER BY a.ID 

または、結合を使用できます

SELECT DISTINCT a.ID
FROM MyTable AS a
INNER JOIN MyTable AS b
ON a.ID=b.ID AND a.TYPE=b.Type
WHERE ABS(DATEDIFF ( hour , a.Date , b.Date ))<=24
ORDER BY a.ID
于 2012-09-03T20:05:57.683 に答える