0

私は複雑なクエリを完了しようとしていますが、少し行き詰まっています。複数の行を返していますが、最初の 2 行だけが必要で、ItemNum 列を Item1 と Item2 の 2 つの列に変換する必要があるため、次のような結果セットが得られます。データ ソースには、メールとカテゴリごとに 1 ~任意の数の行があります。

Email           Category ItemCount  Date                    ItemNum
jimbo@GMAIL.COM CASE FANS   3       2013-07-16 00:00:00.0   11-999-344
jimbo@GMAIL.COM CASE FANS   3       2013-07-16 00:00:00.0   35-103-178
jimbo@GMAIL.COM CASE FANS   3       2013-07-16 00:00:00.0   35-129-060
miyaa@YAHOO.COM CASE FANS   4       2013-07-16 00:00:00.0   35-146-003
miyaa@YAHOO.COM CASE FANS   4       2013-07-16 00:00:00.0   35-146-017
miyaa@YAHOO.COM CASE FANS   4       2013-07-16 00:00:00.0   35-146-017
miyaa@YAHOO.COM CASE FANS   4       2013-07-16 00:00:00.0   35-146-017

結果はこんな感じでお願いしたいです

Email           Category    Date                    Item1         Item2
jimbo@GMAIL.COM CASE FANS   2013-07-16 00:00:00.0   11-999-344    35-103-178  
miyaa@GMAIL.COM CASE FANS   2013-07-16 00:00:00.0   11-999-344    35-103-178  

そのため、欲求不満に加えて、TempTablesを使用したり、変数を宣言したりすることができません。

どんな助けでも大歓迎です。

ありがとう

4

3 に答える 3

1

これを試して:

select a1.email, a1.itemNum, 
(select distinct a3.itemNum
    from myTable a3
    where a3.email = a1.email
    and a3.itemNum > a1.itemNum
    and not exists(
        select 'x' from myTable a4
        where a4.email = a3.email
        and a4.itemNum > a1.itemNum
        and a4.itemNum < a3.itemNum)
)
from myTable a1
where not exists
(select 'x' from myTable a2
where a2.email = a1.email
and a2.itemNum < a1.itemNum)

あなたのフィールドの識別はemail(いくつかの行で同じ)とitemNumだと思います。

既存の条件に関する基準を変更できます。

于 2013-07-18T16:20:52.070 に答える