[SQLite Query]:构建包含0值的选项卡

时间:2012-08-01 16:19:52

标签: android sql sqlite

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

日期,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:我希望我能以清楚的方式解释我的问题,对不起英语错误。

1 个答案:

答案 0 :(得分: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

我希望这会帮助你。