2013-10-08 27 views
0

我有一個簡單的子查詢,我有兩個表。第一個表格包含客戶ID,名字和姓氏。第二張表具有客戶ID和訂單日期。我想生成一個顯示名字,姓氏和訂單日期的查詢。需要根據日期訂購輸出 - 子查詢

我曾嘗試下面的代碼,我不知道怎樣的順序輸出基於日期

Select 
    Customerid, 
    FirstName, 
    LastName 
From 
    Customer 
Where 
    CustomerID IN (select 
        CustomerID 
        from 
        orders 
        where 
        orderdate is not null); 

我顯示輸出僅僅是客戶ID,姓氏和名字。如何在訂單中包含訂單日期。

+0

爲什麼不查詢只是做一個連接,你不會有一個子查詢,會損害性能 – dbarnes

+0

好。你沒有訂單日期在你的主查詢..所以我想你必須使用連接,而不是爲了按日期排序 – zxc

+0

謝謝你的幫助 –

回答

1

什麼呢U選擇=會顯示什麼你,包括你的SELECT語句

Select A.Customerid, A.firstname, A.lastname, B.orderdate 
From tableA A 
Inner join Tableb B on A.customerid = B.customerid 

日期修改過的問題(S),試試下面

Select A.firstname, A.lastname, B.orderdate 
From tableA A 
Inner join Tableb B on A.customerid = B.customerid 
Order By B.orederdate 
1
;with CustomerProductOrderOrdinal(OrderId, Ordinal) 
as 
(
    select 
     o.OrderId 
     , row_number() over (partition by o.CustomerId, o.ProductId order by o.OrderDate) Ordinal 
    from 
     Orders o 
    where 
     o.OrderDate is not null 
     -- filter for product here if so desired 
     -- and o.ProductId = <whatever> 
) 
,FirstCustomerProductOrder(OrderId) 
as 
(
    select 
     OrderId 
    from 
     CustomerProductOrderOrdinal 
    where 
     Ordinal = 1 
) 

select 
    c.CustomerId 
    , c.FirstName 
    , c.LastName 
    --, p.ProductId 
    , o.OrderDate 
From 
    Customer c 
    inner join Orders o 
    on c.CustomerId = o.CustomerId 
    inner join FirstCustomerProductOrder fcpo 
    on o.OrderId = fcpo.OrderId 
    -- join with product if you want product info 
    --inner join Product p 
    -- on o.ProductId = p.ProductId 
+0

謝謝,如果我想用IN寫這個子查詢,它看起來如何? –

+0

@RobertTritt - 就像一個破碎的查詢,不會產生您要求的結果?由於IN()不會向(外部)結果集中添加任何新列,所以'IN()'方法不會產生您正在查找的結果。如果您可以描述上述查詢有什麼問題,可以調整它以符合您的要求。猜測,有多個訂單,你只需要爲每個客戶訂單?如果是這樣,請指定應該選擇哪個訂單。 –

+0

查詢應產生結果,顯示每個客戶訂購產品的第一個日期的姓名和姓氏。更新了 –