다음과 같이 설정된 두 개의 (단순화 된) 테이블 / 클래스가 있습니다.
public class OrderHeader
{
public OrderHeader()
{
Details = new HashSet<OrderDetail>();
}
[Key]
public int TransactionId { get; set; }
public string CustomerName { get; set; }
public virtual ICollection<OrderDetail> Details { get; set; }
}
public class OrderDetail
{
[Key]
public int DetailId { get; set; }
public int ItemId { get; set; }
public int QuantityOrdered { get; set; }
public int QuantityShipped { get; set; }
public int QuantityRemaining { get; set; }
public int TransactionId { get; set; }
[ForeignKey("TransactionId")]
public virtual OrderHeader Header { get; set; }
}
반환 할보기를 만들려고합니다.
TransactionId
OrderHeader
열로Number of Details
OrderHeader
경우 의 세부 사항 수QuantityRemaining
Completed
OrderHeader
라는 이름은 Partially Shipped
어디 QuantityShipped
제로보다 큰 미만이다QuantityOrdered
나는 OrderHeader
및 OrderDetails
테이블을 모두 쿼리하고 내가 원하는 각 열에 대해 하위 쿼리를 만들려고 시도했지만 동일한 TransactionId
. 그리고 내가 DISTINCT
선택을 사용할 때 숫자는 내가 올바른 것으로 알고있는 것과 다릅니다.
이것이 매우 안타깝다는 것을 인정하는 동안 두 개의 열만으로 부분적이지만 정확한 결과 집합을 얻을 수 있습니다.
SELECT
TransactionId,
COUNT(*) AS [Number of Details]
FROM OrderDetails
GROUP BY TransactionID
그러나 다른 두 개의 열에서는 작동하지 않습니다.
이 같은 ?
SELECT
TransactionId,
COUNT(*) AS [Number of Details],
Sum(CASE WHEN QuantityRemaining = 0 THEN 1 ELSE 0 END) AS [Completed],
Sum(CASE WHEN QuantityShipped > 0 AND QuantityShipped < QuantityOrdered THEN 1 ELSE 0 END) AS [Partially Shipped]
FROM OrderDetails
GROUP BY TransactionID
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다