gpt4 book ai didi

mysql - 连接多个select sql语句(4个表)

转载 作者:行者123 更新时间:2023-11-29 19:42:31 28 4
gpt4 key购买 nike

我需要将 2 个 SQL 语句连接在一起,并且这两个语句都可以独立工作。但我不知道如何将两者组合成 1 个 SQL 语句。

我在第一个语句中有两个表,TR120TR1201

SQL 是这样的:

select 
PRODUCT, PRICE, QUANTITY, INVOICE.DATE
from
TR1201
left join
(select
DATE, ID as INVOICE_ID, INVOICE
from TR120) as INVOICE on INVOICE.INVOICE_ID = ID
where
INVOICE.DATE >= '2016-06-01' and INVOICE.DATE <= '2016-06-30'

这将返回我销售的所有产品的列表,其中包括 2016 年 6 月 1 日至 2016 年 6 月 30 日特定时间范围内的价格、数量和销售日期。

现在我需要根据第一个 SQL 中的产品和销售日期找出我在不同的两个表 TR100TR1001 中购买产品的最新价格声明。

select 
PRODUCT, PRICE, SUP.DATE
from
TR1001
left join
(select
DATE, ID as SUP_ID, SUP_INVOICE
from TR100) as SUP on SUP.SUP_ID = ID

这将返回我购买的所有产品的列表,其中包含价格和日期。我只需要根据产品和购买日期查询此查询的最后一条记录。

TR120

ID | INVOICE | DATE
1 | 000001 |2016-06-05
2 | 000002 |2016-06-15
3 | 000003 |2016-06-25

TR1201

ID | PRODUCT | PRICE A | QUANTITY
1 | A | 2,00 | 5
2 | A | 2,00 | 2
3 | A | 2,00 | 1

TR100

ID | SUP_INVOICE | DATE
1 | 160001 | 2016-05-30
2 | 160002 | 2016-06-16

TR1001

ID | PRODUCT | PRICE B
1 | A | 0,5
2 | A | 0,7

我想要得到的结果是这样的:

PRODUCT | PRICE A (tr1201) | QUANTITY | DATE (tr100) | PRICE B (tr1001)
A | 2 | 5 | 2016-05-30 | 0,5
A | 2 | 2 | 2016-05-15 | 0,5
A | 2 | 1 | 2016-05-16 | 0,7

这就是我想做的:(

最佳答案

你尝试过first_value吗?

FIRST_VALUE ( [scalar_expression ] )   
OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )

它的工作原理如下:

  select distinct id, 
first_value(price) over (partition by id (,sup) order by date DESC (latest, ASC for oldest)) as last_price
from table;

可以在此处找到文档:https://msdn.microsoft.com/en-us/library/hh213018.aspx

关于mysql - 连接多个select sql语句(4个表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41264188/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com