Используйте SQL для экспорта родительских / дочерних строк в плоский файл - PullRequest
3 голосов
/ 17 июля 2009

С таблицей Orders:
(OrderID, date, customerID, status, etc)

и OrderDetails таблица:
(ParentID, itemID, quantity, price, etc)

Я хотел бы создать запрос SQL, который будет экспортировать плоский файл CSV с перемежающимися строками Order и OrderDetail. Например, выходные данные могут выглядеть следующим образом (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

Не уверен, с чего начать. Есть идеи? ТИА.

1 Ответ

5 голосов
/ 17 июля 2009

Вы захотите воспользоваться тем фактом, что 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...