使用Orders
表:
(OrderID, date, customerID, status, etc)
和OrderDetails
表:
(ParentID, itemID, quantity, price, etc)
我想创建一个SQL查询,它将导出一个散布有Order
和OrderDetail
行的CSV平面文件。例如,输出可能如下所示(H
和D
分别表示“标题”和“详细信息”。):
"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
不确定从哪里开始。有任何想法吗? TIA。
答案 0 :(得分:5)
您希望利用union all
将在整个结果集的最后尊重order by
子句的事实。因此,如果您按第二列(2!)升序排序,并且第一列(1!)降序,您将获得标题行,然后是该行下方的详细信息行。
此外,请确保两个查询中的列数相同。它们不必具有相同的数据类型,因为您要导出为CSV,但它们必须是相同的数字。否则,union all
将无法将它们堆叠在一起。有时,如果您需要额外的列,则只需使用null
填充列,或者如果您不想在CSV中使用''
这个词,则需null
。
select
'H',
OrderID,
Date,
CustomerID,
Status
from
Headers
union all
select
'D',
ParentID,
ItemID,
Quantity,
Price
from
Details
order by
2 asc, 1 desc