我有一个宽表,包含60多列UPS / Fedex跟踪号码。我正在尝试减少列数并建立父对子关系。
SELECT
[TRACKING-NO1], [TRACKING-NO2], [TRACKING-NO3], [TRACKING-NO4],
[TRACKING-NO5], [TRACKING-NO6], [TRACKING-NO7], [TRACKING-NO8],
[TRACKING-NO9], [TRACKING-NO10]
FROM
[CustomerServiceOrderEntry].[dbo].[InvoicedOrdersTempTable]
WHERE
[TRACKING-NO2] IS NOT NULL
输出返回一行(60+)列中所有跟踪号的列表。如果有子追踪号码,则将填充第2-60列;如果没有子跟踪号码,则2-60将为NULL。
我想要做的是拥有一个父母跟踪号码和相关的子追踪号码,以及一个标志,表明它是一个孩子。
非常感谢您提供的任何帮助......
答案 0 :(得分:1)
我们需要使用UNPIVOT
将列转换为行。
但是UNPIVOT
不会返回任何没有子列的行。
这'为什么,我们需要另外确定这种行。
SELECT
[TRACKING-NO1] TrackingNumberParent ,
'TRUE' TrackingNumberChildren
,TrackingNumberChild
FROM
(SELECT * FROM [CustomerServiceOrderEntry].[dbo].[InvoicedOrdersTempTable] ) SRC
UNPIVOT( TrackingNumberChild FOR COL IN (
[TRACKING-NO2],
[TRACKING-NO3],
[TRACKING-NO4],
[TRACKING-NO5],
[TRACKING-NO6],
[TRACKING-NO7],
[TRACKING-NO8],
[TRACKING-NO9],
[TRACKING-NO10])) PVT
UNION ALL
SELECT
[TRACKING-NO1] TrackingNumberParent,
'FALSE' TrackingNumberChildren,
NULL TrackingNumberChild
FROM
[CustomerServiceOrderEntry].[dbo].[InvoicedOrdersTempTable]
WHERE
[TRACKING-NO2] IS NULL
ORDER BY
TrackingNumberParent
答案 1 :(得分:0)
以下内容应该快得多,因为它只需要一次通过基表...
var detailViewController: UIViewController & DetailViewController