Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要将数据聚合到视图中的帮助(SQL Server)_Sql_Sql Server_Join_Views - Fatal编程技术网

需要将数据聚合到视图中的帮助(SQL Server)

需要将数据聚合到视图中的帮助(SQL Server),sql,sql-server,join,views,Sql,Sql Server,Join,Views,我不熟悉使用视图,我不确定我想做的事情是否可以使用视图 第一个表是我导入SQL的原始数据文件。 我创建了一个视图,其中只包含来自_us列的水果和金额,我很难确定如何将金额包含在其中。通常,我会使用where子句,但我不知道如何在选择其他数据的同时使用where子句 以下是我到目前为止的情况: CREATE VIEW fruit_summary AS SELECT fruit , SUM(amount) AS amount FROM original_table WHERE bought_from

我不熟悉使用视图,我不确定我想做的事情是否可以使用视图

第一个表是我导入SQL的原始数据文件。 我创建了一个视图,其中只包含来自_us列的水果和金额,我很难确定如何将金额包含在其中。通常,我会使用where子句,但我不知道如何在选择其他数据的同时使用where子句

以下是我到目前为止的情况:

CREATE VIEW fruit_summary AS
SELECT fruit
, SUM(amount) AS amount
FROM original_table
WHERE bought_from_us = 'yes'
GROUP BY fruit
这将得到水果列和来自列的数量。然而,我不知道如何在那里得到日期和总金额。使用视图还是只创建一个表并使用联接就可以了?

试试:

SELECT fruit
, SUM(amount) AS amount
, SUM(amount_from_us) AS amount_from_us
, [Date]
FROM original_table
WHERE bought_from_us = 'yes'
GROUP BY fruit, [Date]
尝试:


很抱歉我的第一个答案,现在我知道你需要什么了:

with CTE_fruit as (
SELECT fruit, date, SUM(amount) AS amount, NULL AS amountUS
FROM original_table
GROUP BY fruit, date
union
SELECT fruit, date, NULL AS amount, SUM(amount) AS amountUS
FROM original_table
WHERE bought_from_us = 'yes'
GROUP BY fruit, date
)
select fruit, date, sum(amount), sum(amountUS) from CTE_fruit
GROUP BY fruit, date

我想这会有用的

很抱歉我的第一个答案,现在我意识到你需要什么:

with CTE_fruit as (
SELECT fruit, date, SUM(amount) AS amount, NULL AS amountUS
FROM original_table
GROUP BY fruit, date
union
SELECT fruit, date, NULL AS amount, SUM(amount) AS amountUS
FROM original_table
WHERE bought_from_us = 'yes'
GROUP BY fruit, date
)
select fruit, date, sum(amount), sum(amountUS) from CTE_fruit
GROUP BY fruit, date
create table #original_table
(
    [date] datetime,
    fruit varchar(50),
    amount money,
    bought_from_us char(3)
)

insert #original_table([date], fruit, amount, bought_from_us)
values ('01/18/2012', 'Apple', 10, 0);
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/18/2012', 'Apple', 25, 'yes');
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/18/2012', 'Orange', 32, 0);
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/18/2012', 'Banana', 8, 0);
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/18/2012', 'Banana', 235, 'yes');
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/17/2012', 'Apple', 65, 0);
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/17/2012', 'Apple', 4, 'yes');
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/17/2012', 'Orange', 56, 0);
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/17/2012', 'Orange', 95, 0);
我想这会管用的

create table #original_table
(
    [date] datetime,
    fruit varchar(50),
    amount money,
    bought_from_us char(3)
)

insert #original_table([date], fruit, amount, bought_from_us)
values ('01/18/2012', 'Apple', 10, 0);
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/18/2012', 'Apple', 25, 'yes');
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/18/2012', 'Orange', 32, 0);
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/18/2012', 'Banana', 8, 0);
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/18/2012', 'Banana', 235, 'yes');
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/17/2012', 'Apple', 65, 0);
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/17/2012', 'Apple', 4, 'yes');
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/17/2012', 'Orange', 56, 0);
insert #original_table([date], fruit, amount, bought_from_us)
values ('01/17/2012', 'Orange', 95, 0);
你所要求的结果是相当复杂的。要获得最后一张唱片,1月17日香蕉0 0,您需要以下内容:

with date_fruit_table as
(
    select date_table.[date], fruit_table.fruit
    from
        (select distinct fruit from #original_table) as fruit_table,
        (select distinct [date] from #original_table) as date_table
)

select date_fruit_table.[date], date_fruit_table.fruit,
    SUM(isnull(#original_table.amount, 0)) as amount,
    SUM(case #original_table.bought_from_us when 'yes' then #original_table.amount else 0 end) as amount_from_us
from date_fruit_table
left outer join #original_table on #original_table.fruit = date_fruit_table.fruit
    and #original_table.[date] = date_fruit_table.[date]
group by date_fruit_table.[date], date_fruit_table.fruit
order by date_fruit_table.[date] desc
你所要求的结果是相当复杂的。要获得最后一张唱片,1月17日香蕉0 0,您需要以下内容:

with date_fruit_table as
(
    select date_table.[date], fruit_table.fruit
    from
        (select distinct fruit from #original_table) as fruit_table,
        (select distinct [date] from #original_table) as date_table
)

select date_fruit_table.[date], date_fruit_table.fruit,
    SUM(isnull(#original_table.amount, 0)) as amount,
    SUM(case #original_table.bought_from_us when 'yes' then #original_table.amount else 0 end) as amount_from_us
from date_fruit_table
left outer join #original_table on #original_table.fruit = date_fruit_table.fruit
    and #original_table.[date] = date_fruit_table.[date]
group by date_fruit_table.[date], date_fruit_table.fruit
order by date_fruit_table.[date] desc


你能详细说明一下你期望的结果是什么吗?你得到了哪些栏目。。。Regardsm我的预期结果是右边的表格,其中只有每天每种水果的实例,以及我们提供的总数量和总数量。请检查我下面的答案,我希望它能起作用。。。请详细说明你的预期结果和你得到的专栏。。。Regardsm我的预期结果是右边的表格,其中只有每天每种水果的实例,以及我们提供的总数量和总数量。请检查我下面的答案,我希望它能起作用。。。谢谢你!我喜欢这个答案的简单。它正是我想要的。@eek142-它能给你17年1月香蕉0的最后一个记录吗?哦,抓得好。它不会给我香蕉,0,0,但现在,我可以接受它。事实上,我认为任何丢失的东西都是零,因为那一天没有销售记录。谢谢!我喜欢这个答案的简单。它正是我想要的。@eek142-它能给你17年1月香蕉0的最后一个记录吗?哦,抓得好。它不会给我香蕉,0,0,但现在,我可以接受它。事实上,我认为任何丢失的东西都是零,因为那天在那个项目中没有销售记录。不幸的是,这是不起作用的,因为MaultToFuffuu没有数值。它基本上只是一个布尔值。您在提出问题时描述过它的dayatype吗!!!!!!!打-1是不公平的。阅读你回答我的内容,我的预期结果是右边的表格,表格中只有每天每种水果的总数量和我们提供的总数量。那-1不是我提供的。我决不会投票反对试图帮助别人的人。事实上,我还没有足够的代表来否决投票。不幸的是,这不起作用,因为来自我们的金额中没有数值。它基本上只是一个布尔值。您在提出问题时描述过它的dayatype吗!!!!!!!打-1是不公平的。阅读你回答我的内容,我的预期结果是右边的表格,表格中只有每天每种水果的总数量和我们提供的总数量。那-1不是我提供的。我决不会投票反对试图帮助别人的人。事实上,我还没有足够的票数来否决投票。谢谢!我会调查的,谢谢!我会调查的。