当前位置: 代码迷 >> Sql Server >> 个SQL
  详细解决方案

个SQL

热度:70   发布时间:2016-04-24 10:07:51.0
求助个SQL


通过表A和表B的数据,得出最后一个表的数据。
那2行0的数据也要显示
------解决方案--------------------
select a.*,isnull(b.amount,0) as amount from (select * from a cross join (select disintct date from b) as b) as a left join b on a.date=b.date
 
------解决方案--------------------
排下序
----------------------------------------------------------------
-- Author  :DBA_HuangZJ(發糞塗牆)
-- Date    :2014-08-20 15:05:24
-- Version:
--      Microsoft SQL Server 2012 - 11.0.5058.0 (X64) 
-- May 14 2014 18:34:29 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据:[A]
if object_id('[A]') is not null drop table [A]
go 
create table [A]([ID] int,[OrderNum] varchar(4),[Target] int,[Product] varchar(1))
insert [A]
select 1,'N001',100,'A' union all
select 2,'N001',80,'B'
--> 测试数据:[B]
if object_id('[B]') is not null drop table [B]
go 
create table [B]([ID] int,[PID] int,[Date] VARCHAR(10),[Amount] int)
insert [B]
select 1,1,'2014.5.1',60 union all
select 2,1,'2014.5.2',40 union all
select 3,2,'2014.5.2',40 union all
select 4,2,'2014.5.3',40
--------------开始查询--------------------------
SELECT DISTINCT  ISNULL(b.date,a.date)date ,
        a.ordernum ,
        a.TARGET ,
        ISNULL(b.amount,0) AS amount ,
        a.product
FROM    ( SELECT    *
          FROM      a 
                    CROSS JOIN ( SELECT DISTINCT
                                        date
                                 FROM   b
                               ) AS c
        ) AS a
        left JOIN b ON a.id=b.pid AND a.date=b.date
ORDER BY date,product,amount 
----------------结果----------------------------
/* 
date       ordernum TARGET      amount      product
---------- -------- ----------- ----------- -------
2014.5.1   N001     100         60          A
2014.5.1   N001     80          0           B
2014.5.2   N001     100         40          A
2014.5.2   N001     80          40          B
2014.5.3   N001     100         0           A
2014.5.3   N001     80          40          B
*/
  相关解决方案