我正在尝试实现查询,但我不知道如何构建它。 我的标签是这样的:
日期,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:我希望我能以清楚的方式解释我的问题,对不起英语错误。答案 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
我希望这会帮助你。