이 필요합니다.
SELECT InvoiceNumber, InvoiceDate,
(SELECT InvoiceLineItemAmount
FROM InvoiceLineItems
WHERE Invoices.InvoiceID = Invoicelineitems.InvoiceID)
AS InvoiceLineItemAmount
FROM Invoices
WHERE VendorID = 122
ORDER BY InvoiceDate
하위 쿼리가 둘 이상의 값을 반환하면 몇 가지 옵션이 있습니다.
당신은 TOP 1
SELECT InvoiceNumber, InvoiceDate,
(SELECT TOP 1 InvoiceLineItemAmount
FROM InvoiceLineItems
WHERE Invoices.InvoiceID = Invoicelineitems.InvoiceID)
AS InvoiceLineItemAmount
FROM Invoices
WHERE VendorID = 122
ORDER BY InvoiceDate
당신은 집계 함수를
SELECT InvoiceNumber, InvoiceDate,
(SELECT MAX(InvoiceLineItemAmount)
FROM InvoiceLineItems
WHERE Invoices.InvoiceID = Invoicelineitems.InvoiceID)
AS InvoiceLineItemAmount
FROM Invoices
WHERE VendorID = 122
ORDER BY InvoiceDate
을 사용할 수 있습니다 잡을 수 또는 당신은 @MartinSmith에 대한 XML
SELECT InvoiceNumber, InvoiceDate,
STUFF((
SELECT ', ' + LTRIM(InvoiceLineItemAmount)
FROM InvoiceLineItems
WHERE Invoices.InvoiceID = Invoicelineitems.InvoiceID
FOR XML PATH('')),
1, 2, '') AS InvoiceLineItemAmount
FROM Invoices
WHERE VendorID = 122
ORDER BY InvoiceDate
또는를 사용하여 결과를 연결할 수 있습니다, 당신은 관계를 되돌리고 대신 InvoiceLineItems에서 멈출 수 있습니다. 스키마 제한을 모르면 동일한 returns more than one value
문제가 발생할 수 있습니다.
SELECT (SELECT InvoiceNumber
FROM InvoiceLineItems
WHERE Invoices.InvoiceID = Invoicelineitems.InvoiceID)
AS InvoiceNumber,
(SELECT InvoiceDate
FROM InvoiceLineItems
WHERE Invoices.InvoiceID = Invoicelineitems.InvoiceID)
AS InvoiceDate
InvoiceLineItemAmount
FROM InvoiceLineItems
WHERE VendorID = 122
ORDER BY InvoiceDate
결국 모든 요구 사항에 따라 다릅니다.
테이블 정의 란 무엇입니까? 우리는 순간에 어느 테이블이 어떤 테이블에 속해 있는지 추측 할 필요가 있습니다. –