2016-08-05 2 views
0

sql, asp.net을 사용하여 OrderItem 테이블에서 최신 날짜를 가져 오려고합니다.sql의 테이블 열에서 최신 날짜를 얻는 방법?

string strconnect = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 
    SqlConnection myConnect = new SqlConnection(strconnect); 

    string command = " 
     Select OrderItem.ProductID, Product.Name, OrderItem.TotalQty, Product.UnitPrice, OrderItem.TotalPrice 
     FROM OrderItem 
     INNER JOIN Product ON OrderItem.ProductID=Product.ProductID 
     WHERE OrderDate = MAX(OrderDate) from OrderItem"; 
    SqlCommand cmd = new SqlCommand(command, myConnect); 

    myConnect.Open(); 

    SqlDataReader reader = cmd.ExecuteReader(); 

    GridView1.DataSource = reader; 
    GridView1.DataBind(); 
    reader.Close(); 
    myConnect.Close(); 

알려 주시기 바랍니다 : 여기 Incorrect syntax near the keyword 'from'.

내 코드입니다 : 내가 프로그램을 실행할 때, 그들은이 오류를 보여!

답변

0

FROM 절에 지정 했으므로 WHERE 조건에서 "OrderItem에서"를 제거해야합니다.

SELECT 
    i.ProductID, 
    p.Name, 
    i.TotalQty, 
    p.UnitPrice, 
    i.TotalPrice 
FROM 
    OrderItem i 
     INNER JOIN Product p 
      ON i.ProductID = p.ProductID 
WHERE 
    i.OrderDate = (SELECT MAX(OrderDate) 
        FROM OrderItem 
        WHERE OrderItem.ProductID = i.ProductID) 
+0

오류가 다음 발생했습니다'는 HAVING 절 또는이 가장 좋은 대답은 왜 선택 list.' –

+0

에 포함 된 하위 쿼리가 아니면 집계조차 SQL이 유효 WHERE 절에 나타나지 않을 수 있습니다 ? – SIDU

0
SELECT o.ProductID, p.Name, o.TotalQty, p.UnitPrice, o.TotalPrice 
FROM OrderItem AS o 
INNER JOIN Product AS p ON o.ProductID = p.ProductID 
ORDER BY o.OrderDate DESC 
LIMIT 1 

아, 당신은 SQL 서버를 사용하고,이 시도 : (하지만 테스트하지)

SELECT TOP 1 o.ProductID, p.Name, o.TotalQty, p.UnitPrice, o.TotalPrice 
FROM OrderItem AS o 
INNER JOIN Product AS p ON o.ProductID = p.ProductID 
ORDER BY o.OrderDate DESC 
+0

오류가 발생합니다 : 'LIMIT'근처에 잘못된 구문이 있습니다. –

0

그것은 주문 날짜의 데이터 유형에 따라 달라집니다. 변수의 데이터 유형을 변경하거나 잘림을 적용해야 할 수도 있습니다.

declare @MaxOrderDate datetime 
select @MaxOrderDate = MAX(OrderItem.OrderDate) from OrderItem 

Select 
    OrderItem.ProductID, 
    Product.Name, 
    OrderItem.TotalQty, 
    Product.UnitPrice, 
    OrderItem.TotalPrice 
FROM 
    OrderItem 
     INNER JOIN Product 
      ON OrderItem.ProductID=Product.ProductID 
WHERE 
    OrderItem.OrderDate = @MaxOrderDate 
0

WHERE 절에서 하위 쿼리를 변경해야합니다.

SELECT OrderItem.ProductID, Product.Name, OrderItem.TotalQty, Product.UnitPrice, OrderItem.TotalPrice 
FROM OrderItem 
INNER JOIN Product ON OrderItem.ProductID=Product.ProductID 
WHERE OrderDate = (SELECT MAX(OrderDate) FROM OrderItem); 
+0

Welcome to Stack Overflow! 질문을 수정했습니다. 질문에 대답 할 때 코드에 대해 조금 설명하고 문제를 해결하는 방법을 설명하는 것이 가장 좋습니다. BTW 내 편집에 동의하지 않으면 다시 롤백 할 수 있습니다. 수정 사항을 롤백하려면 내 아바타 그림 위에있는 "편집 ... 전"을 클릭하십시오. 그러면 편집 기록으로 이동합니다. 편집 내역에서 롤백 링크를 찾을 수 있습니다. –

+1

제안 해 주셔서 감사합니다. 다음에 내 대답을 개선 할 것입니다. – Reshma

관련 문제