首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接多个select sql语句(4个表)

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

Stack Overflow用户
提问于 2016-12-21 13:42:01
回答 2查看 46关注 0票数 0

我需要将两个SQL语句连接在一起,这两个语句都是独立工作的。但我不知道如何将这两个语句合并到一个SQL语句中。

我在第一次声明中有两个表,TR120TR1201

SQL是这样的:

代码语言:javascript
复制
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'

这是一个清单的所有产品,我出售,价格,数量和销售日期在一个特定的时间框架内,从01-06-16至30-06-16。

现在,我需要根据第一条SQL语句中的产品和销售日期,在不同的两个表中查找我购买产品的最新价格,TR100TR1001

代码语言:javascript
复制
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

代码语言:javascript
复制
ID | INVOICE | DATE
1  | 000001  |2016-06-05
2  | 000002  |2016-06-15
3  | 000003  |2016-06-25

TR1201

代码语言:javascript
复制
ID | PRODUCT | PRICE A | QUANTITY
1  | A       | 2,00    |    5
2  | A       | 2,00    |    2
3  | A       | 2,00    |    1

TR100

代码语言:javascript
复制
ID | SUP_INVOICE | DATE
1  | 160001      | 2016-05-30
2  | 160002      | 2016-06-16

TR1001

代码语言:javascript
复制
ID | PRODUCT | PRICE B
1  | A       | 0,5
2  | A       | 0,7

我想得到的结果是:

代码语言:javascript
复制
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

这就是我想要做的:

EN

回答 2

Stack Overflow用户

发布于 2016-12-21 13:48:30

你试过first_value了吗?

代码语言:javascript
复制
FIRST_VALUE ( [scalar_expression ] )   
    OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )  

它的工作方式如下:

代码语言:javascript
复制
  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

票数 0
EN

Stack Overflow用户

发布于 2016-12-21 14:01:00

我没有你的桌子,所以不能测试,所以我只提供建议。我认为你需要的是像这样的外应用程序,而不是连接

代码语言:javascript
复制
select 
      T1.Product
    , T1.Price
    , T2.DATE   -- Alias this
    , T2.Price  -- Alias this
    , T3.DATE   -- Alias this
    , T3.Price  -- Alias this
from T1
OUTER APPLY (
    select top 1
          Date
         ,Price
    from table2
    WHERE ID = T1.Id AND product = T1.Product-- plus any other joins
    ORDER BY Date desc
) as T2 
OUTER APPLY (
    select top 1 
          Date
         ,Price
    from table3
    WHERE ID = T1.Id AND product = T1.Product-- plus any other joins
    ORDER BY Date desc
) as T3 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41264188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档