У меня есть симпатичная леди, которая хочет указать c форматирование при выводе, и я вижу, что это очень необычно, несмотря на общие правила, можете ли вы посоветовать, если я смогу добиться этого каким-то образом с TSQL
. Я вставил образец ввода и хотел вывод. Я думаю, что это ПОЛНОЕ СОЕДИНЕНИЕ, но нужно сделать больше очистки, здесь немного потеряно. Мой первый проект. Попытка убедить ее использовать 2 отдельные таблицы для вывода, чтобы сохранить некоторую целостность, но не удалось, так что принять это вызов)! НЕТ отношений между LineOrd
и LinePr
. Я сочинил что-то с несколькими шагами, но чувствую, что должен быть более элегантным, чем делать 4-5 шагов. Лучший
DROP TABLE If exists #o
CREATE TABLE #o (OrderID int, LineOrd int, ProductID int)
INSERT #o VALUES
(111, 1, 10001),(2222, 1, 2001),(2222, 2, 2002),
(2222, 3, 2003),(3333, 1, 30001),(3333, 2, 30002)
DROP TABLE If exists #p
CREATE TABLE #p (OrderID int, LinePr int, ProfileID CHAR(10))
INSERT #p VALUES
(111, 1, 'alpha1'),(111, 2, 'bravo1'),
(2222, 1, 'charlie2'),(2222, 2, 'delta2'),
(3333, 1, 'echo3'),(3333, 2, 'hotel3')
-- select * from #o; select * from #p
SELECT
o.*, '--' f
,p.LinePR, p.ProfileID
,ROW_NUMBER() OVER (PARTITION BY o.orderID, o.lineOrd ORDER BY lineOrd) rn
,ROW_NUMBER() OVER (PARTITION BY o.orderID, p.linePr ORDER BY linePr ) rn2
,OrdMax = (SELECT MAX(lineOrd) FROM #o o2 WHERE o2.OrderID = o.OrderID)
,PrMax = (SELECT MAX(linePr) FROM #p p2 WHERE p2.OrderID = p.OrderID)
, 0 sw
FROM #o o
FULL JOIN #p p ON p.orderID = o.OrderID
ORDER BY 1,2,5
-- need more cleaning