0

我正在尝试实现一个查询,但我不知道如何构建它。我的标签是这样的:

日期,类型_水果,价格

和记录是这样的:

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$  |
|----------------------------------------

但是……但是……只取前三名买的水果!因此,从 SQLite DB 中只取橙色(10 美元+5 美元)、香蕉(25 美元)和苹果(10 美元),而不取桃子(仅 3 美元)。有人可以帮我吗?

PS:我希望我清楚地解释了我的问题,对于一些英语错误,我深表歉意。

4

1 回答 1

0

这是 SQL SERVER 的示例。如果您使用另一个数据库,则可能会收取费用。

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 回答