【发布时间】:2018-09-13 09:48:05
【问题描述】:
我正在尝试获取下面的查询,以根据该列中的值为“DESIRED TRANSIT TIME”列分配一个数值 - 如果它以 A 开头,则为 10,如果以 C 开头,则为 5。从那里我想要将该编号添加到 REVISED_EX_FACTORY 以获得新的出厂设置。我从来没有尝试过这个,使用下面的查询我得到的结果是日期加上文本'DESIRED TRANSIT TIME'——这很有意义,因为它是一个字符串。如何获取列中的值而不是第 20 行中列的文本名称?有人告诉我转换 datetime 值以摆脱时间组件是一个好方法。
理想的结果是在日期上增加 5 天或 10 天,具体取决于 'DESIRED TRANSIT TIME' 中的值
SQL:
USE PDX_SAP_USER
GO
SELECT E.team_member_name [EMPLOYEE],
K.business_segment_desc [BUSINESS SEGMENT],
G.order_status [GPS ORDER STATUS],
H.po_type [PO TYPE],
G.order_no [GPS ORDER NO],
I.po_number [SAP PO NUMBER],
I.shipping_instruct [SAP SHIP MODE],
G.shipping_type [GPS SHIP MODE],
CASE
WHEN I.shipping_instruct LIKE 'A%'
THEN '10'
WHEN I.shipping_instruct LIKE 'C%'
THEN '5'
END [DESIRED TRANSIT TIME],
CONVERT(VARCHAR(12),I.revised_ex_factory,101) [LAST CONFIRMED DATE ],
CONVERT(VARCHAR(12),I.revised_ex_factory,101) + 'DESIRED TRANSIT TIME' AS 'PROPOSED ETA',
CONVERT(VARCHAR(12),S.po_estimated_deliv_date,101) [CURRENT DELIV DATE],
-- 'days_diff'
I.material [MATERIAL],
M.description [DESCRIPTION],
I.stock_category [STOCK CATEGORY],
I.po_ordered_quantity [PO ORDERED QUANTITY],
I.po_recvd_quantity [PO RECVD QUANTITY],
I.po_balance_quantity [PO BALANCE QUANTITY],
I.po_intransit_quantity [PO INTRANSIT QUANTITY],
I.plant_code [PLANT],
I.direct_ship_code [DS CODE],
I.comment [COMMENT]
FROM (SELECT order_no,
order_status,
shipping_type
FROM asagdwpdx_prod.dbo.SimoxOrder1
UNION ALL
SELECT order_no,
order_status,
shipping_type
FROM asagdwpdx_prod.dbo.SimoxOrder2
UNION ALL
SELECT order_no,
order_status,
shipping_type
FROM asagdwpdx_prod.dbo.SimoxOrder3) G
JOIN pdx_sap_user..vw_po_header H ON G.order_no = H.ahag_number
JOIN pdx_sap_user..vw_po_item I ON H.po_number = I.po_number
JOIN pdx_sap_user..vw_po_size S ON I.po_number = S.po_number
AND I.po_item_number = S.po_item_number
JOIN pdx_sap_user..vw_mm_material M ON I.material = M.material
JOIN pdx_sap_user..vw_kd_business_segment K ON M.business_segment_code = K.business_segment_code
JOIN adi_user_maintained..scm_po_employee_name E ON I.po_number = E.po_number
WHERE I.po_balance_quantity > 0
AND I.del_indicator NOT IN ('L','S')
AND H.PO_TYPE NOT IN ('01','UB')
AND I.shipping_instruct IN ('A1','A2','A5','C1','C2','C3')
示例结果:
04/30/2016DESIRED TRANSIT TIME
【问题讨论】:
-
所以你希望它返回
"04/30/2016DESIRED TRANSIT TIME"?它目前返回的是什么? -
对任何混淆表示歉意 - 这就是它目前真正带来的 - 在这种情况下,CASE 函数返回值 5 - 因此我希望计算返回 05/04/2016 - 这样做帮忙?
标签: sql sql-server datetime type-conversion case