我知道如何以一种方式执行此操作,但我创建的查询大约需要 1:30 才能运行,并且由于系统限制,我需要对其进行优化以更快。我已经使用同一个表的多个连接来执行此操作,但想知道是否有更短的查询或更有效的查询我可以使用。
我给出了一个查询示例,但它确实从下面引用的 OrderItemFormDateFields 表的行中提取了大约 100 列。我已经创建了列,我得到了我需要的结果,但同样,它很慢。如果您需要有关表格的更多详细信息,请告诉我。
我想我基本上是在寻找一种动态填充而不是列出每一列的方法。我已经看到了一些使用枢轴和案例语句的不同方式,但我对枢轴还不是很好,而且案例似乎效率更低。谢谢!
SELECT
OrderNumber
,Product
,OrderDate
, oifd1.value as 'ADD_SUBJ_ADDRESS'
, oifd2.value as 'ADD_SUBJ_BATHS'
, oifd3.value as 'ADD_SUBJ_BEDROOMS'
, oifd4.value as 'ADD_SUBJ_DATE'
, oifd5.value as 'ADD_SUBJ_GLA'
FROM(
SELECT CAST(oi.orderid as VARCHAR(MAX))+'.'+CAST(oi.orderitemid as VARCHAR(MAX)) as OrderNumber
,p.abbreviation as product, o.orderdate
FROM OrderItems oi
join products p on p.productid = oi.productid
join orders o on o.orderid = oi.orderid)x
left join orderitemformdatafields oifd1 on oifd1.orderreference = OrderNumber and oifd1.fieldname in ( 'SUBJ_STREET_ADDR')
left join orderitemformdatafields oifd2 on oifd2.orderreference = OrderNumber and oifd2.fieldname in ( 'ADD_SUBJ_BATHS')
left join orderitemformdatafields oifd3 on oifd3.orderreference = OrderNumber and oifd3.fieldname in ( 'ADD_SUBJ_BEDROOMS')
left join orderitemformdatafields oifd4 on oifd4.orderreference = OrderNumber and oifd4.fieldname in ( 'ADD_SUBJ_DATE')
left join orderitemformdatafields oifd5 on oifd5.orderreference = OrderNumber and oifd5.fieldname in ( 'ADD_SUBJ_GLA')