到目前为止,感谢您的帮助。这是前一个帖子的延续。
我想要做的是替换其中一个结果字段中的值(比如说PROJECT_ID)来做这样的事情。我希望这是简单的事情。但是这个项目还有很多。
select oc.ncr_no,
max(case when OC.LU_NAME = 'Project' then OC.KEY_REF end) PROJECT_ID,
max(case when OC.LU_NAME = 'SupplierInfo' then OC.KEY_REF end) SUPPLIER_ID,
max(case when OC.LU_NAME = 'PurchaseOrder' then OC.KEY_REF end) ORDER_NO,
max(case when OC.LU_NAME = 'PurchaseReceipt' then OC.KEY_REF end) PURCHASE_RECEIPT,
max(case when OC.LU_NAME = 'InventoryPart' then OC.KEY_REF end) INVENTORY_PART,
replace(PROJECT_ID,'PROJECT_ID=','') as PROJECT_ID
from OC
group by oc.ncr_no
我使用此架构作为示例(从SQL Fiddle中提取)。不幸的是我无法弄清楚如何保存它。
CREATE TABLE OC
(
[NCR_NO] int,
[LU_NAME] varchar(15),
[KEY_REF] varchar(33)
);
INSERT INTO OC ([NCR_NO], [LU_NAME], [KEY_REF])
VALUES
(100001, 'Project', 'PROJECT_ID=PROJECT1^'),
(100001, 'SupplierInfo', 'SUPPLIER_ID=UNIQUESUPPLIERNUMBER^'),
(100001, 'PurchaseOrder', 'ORDER_NO=UNIQUEORDERNO^'),
(100196, 'PurchaseReceipt', 'UNIQUE PURCHASE RECEIPT'),
(100511, 'InventoryPart', 'CONTRACT=UNIQUECONTRACTNO');
答案 0 :(得分:0)
目前尚不清楚是否要删除每个=
中KEY_REF
之前的所有内容。如果是这样,您可以使用:
select ncr_no,
max(case when LU_NAME = 'Project' then KEY_REF end) Project,
max(case when LU_NAME = 'SupplierInfo' then KEY_REF end) SupplierInfo,
max(case when LU_NAME = 'PurchaseOrder' then KEY_REF end) PurchaseOrder,
max(case when LU_NAME = 'PurchaseReceipt' then KEY_REF end) PurchaseReceipt,
max(case when LU_NAME = 'InventoryPart' then KEY_REF end) InventoryPart
from
(
select ncr_no,
LU_NAME,
substring(KEY_REF, charindex('=', key_ref)+1 , len(key_ref)) KEY_REF
from yourtable
) src
group by ncr_no;
注意:这是您可以使用的基本语法,但这可能会根据您使用的数据库而改变。