使用SQL将父/子行导出到平面文件中

Mon*_*nty 3 t-sql

带一张Orders桌子:
(OrderID, date, customerID, status, etc)

和一张OrderDetails桌子:
(ParentID, itemID, quantity, price, etc)

我想创建一个SQL查询,它将导出CSV平面文件OrderOrderDetail散布的行.例如,输出可能看起来像这样(H并分别D表示"Header"和"Detail").

"H",2345,"6/1/09",856,"Shipped"
"D",2345,52,1,1.50
"D",2345,92,2,3.25
"D",2345,74,1,9.99
"H",2346,"6/1/09",474,"Shipped"
"D",2346,74,1,9.99
"D",2346,52,1,1.50
Run Code Online (Sandbox Code Playgroud)

不知道从哪里开始这个.有任何想法吗?TIA.

Eri*_*ric 5

您将希望利用在整个结果集上最终union all遵守该order by条款的事实.因此,如果您按第二列(2!)升序排序,并且第一列(1!)降序,您将获得标题行,然后是其下方的详细信息行.

此外,请确保两个查询中的列数相同.它们不必具有相同的数据类型,因为您要导出为CSV,但它们必须是相同的数字.否则,union all将无法将它们堆叠在一起.有时,null如果您需要额外的列,或者''如果您不想null在CSV中使用该单词,则只需填写列.

select
    'H',
    OrderID,
    Date,
    CustomerID,
    Status
from
    Headers
union all
select
    'D',
    ParentID,
    ItemID,
    Quantity,
    Price
from
    Details
order by
    2 asc, 1 desc
Run Code Online (Sandbox Code Playgroud)