3

データベース:

Transaction  ProductID
 1              1000
 2              1000
 2              1001 
 3              1000
 3              1002
 4              1000
 4              1001
 5              1003

上の表で、T-SQL ステートメントを使用してこの結果を見つける方法は?

+-------------+-----------+-----------------+
| PRODUCTID1  | PRODUCTID2|     SUPPORT     |
+-------------+-----------+-----------------+
|      1000   |   1001    |         2       |
+-------------+-----------+-----------------+
|      1000   |   1002    |         1       |
+-------------+-----------+-----------------+
|      1000   |   1003    |         0       |
+-------------+-----------+-----------------+
|      1001   |   1002    |         0       |
+-------------+-----------+-----------------+
|      1001   |   1003    |         0       |
+-------------+-----------+-----------------+
|      1002   |   1003    |         0       |,
+-------------+-----------+-----------------+

テスト テーブル:

create table transactions(
   ORDERID    INT,
   PRODUCTID INT
);

insert into transactions(ORDERID, PRODUCTID)
values ('1', '1000')
      ,('2', '1000')
      ,('2', '1001')
      ,('3', '1000')
      ,('3', '1002')
      ,('4', '1000')
      ,('4', '1001'),
       ('5', '1003');

前もって感謝します。

4

1 に答える 1

3

ゼロを推測できますか?つまり、リストされていないものはすべてゼロであると言えますか? もしそうなら:

select t1.PRODUCTID as [PRODUCTID1], t2.PRODUCTID as [PRODUCTID2],
       COUNT(1) as [SUPPORT]
from transactions t1 inner join transactions t2
  on t1.ORDERID = t2.ORDERID
  and t1.PRODUCTID < t2.PRODUCTID
group by t1.PRODUCTID, t2.PRODUCTID

出力あり:

PRODUCTID1  PRODUCTID2  SUPPORT
----------- ----------- -----------
1000        1001        2
1000        1002        1
于 2011-05-04T12:32:50.103 に答える