0

クエリを実現しようとしていますが、作成方法がわかりません。私のタブは次のようなものです:

日付、type_fruit、価格

レコードは次のようなものです。

date_1, orange, 10$
date_1, orange, 5$
date_2, peach, 3$
date_3, banana, 25$
date_3, apple, 10$

私の目標は、次のようなタブを作成することです。

| ---------------------------------------
|            | orange | banana |  apple |
| date_1     |   15$  |   0$   |    0$  |
| date_3     |    0$  |  25$   |   10$  |
|----------------------------------------

しかし...しかし...購入した果物のトップ3だけを取る!したがって、SQLite DBからは、オレンジ(10 $ + 5 $)、バナナ(25 $)、アップル(10 $)だけを使用し、ピーチ(3 $のみ)は使用しません。誰か助けてくれませんか?

PS:英語の間違いでごめんなさい、問題を明確に説明できたらいいのにと思います。

4

1 に答える 1

0

これは SQL SERVER の例です。別のDBを使用する場合は、変更される可能性があります。

if  OBJECT_ID('tempdb..#example') IS NOT NULL

drop table  #example

go

create table #example

(

    [date] date,

    type_fruit varchar(100),

    price int

)

insert into #example

select

 getdate() as [date], 'orange' as type_fruit, 10 as price

union select

getdate(), 'orange', 5

union select

getdate()-1, 'peach', 3

union select

getdate()-2, 'banana', 25

union select

getdate()-2, 'apple', 10


SELECT [DATE], ISNULL(orange,0)orange, ISNULL(banana,0)orange,ISNULL(apple,0)orange

FROM (

SELECT [date],  type_fruit, price

FROM #example) up

PIVOT (SUM(PRICE) FOR type_fruit IN ( orange, banana,apple)) AS pvt

WHERE isnull(orange,-1)+isnull(banana,-1)+ISNULL(apple,-1) <> -3

GO

これがあなたを助けてくれることを願っています。

于 2012-08-01T19:21:31.290 に答える