【发布时间】:2017-03-02 01:34:36
【问题描述】:
我正在使用 .bat 和 SQLCMD 从我的 SQL Server 导出数据。
目前,这就是我所拥有的:
SQLCMD -S <server name> -d <database name> -U <username> -P <password> -Q
"set nocount on;
SELECT T0.ItemCode,
T0.FrgnName,
(SELECT cast(round(T3.Price,2,1) as decimal(18,2))
FROM ITM1 T3
WHERE T3.ItemCode = T0.Itemcode AND T3.[PriceList] = '1'),
cast(round(T1.Price,2,1) as decimal(18,2)),
CASE WHEN T2.OnHand - T2.IsCommited > 10 THEN '10' ELSE '0' END,
T0.CodeBars
FROM OITM T0
INNER JOIN ITM1 T1 ON T0.ItemCode = T1.ItemCode AND T1.[PriceList] = '2'
INNER JOIN OITW T2 ON T0.ItemCode = T2.ItemCode AND T2.WhsCode = '01. Main'
WHERE T0.ItemName NOT LIKE '%%DNU%%'
AND T0.PrchseItem = 'y' AND T0.FrozenFor = 'n'
AND T0.QryGroup2 = 'y' AND T0.QryGroup10 = 'n'"
-s "," -o "\\serveraddress\stockfile.csv" -h-1 -s"~" -W -w 999
基本上,我需要在库存文件中添加最后一个片段 - 这是 OPOR 表中最早的 DocDueDate。同一产品可能有多个采购订单 - 所以我肯定需要能够获取最早日期的数据。
在我一直在使用的 SAP 和查询中,我似乎无法在 SQLCMD 脚本中实现这一点:
ISNULL((SELECT top 1 r1.[DocDueDate]
FROM POR1 r
INNER JOIN OPOR r1 ON r.DocEntry = r1.DocEntry
WHERE r.[LineStatus] = 'O'
AND r.[ItemCode] = T0.[ItemCode]
ORDER BY r1.[DocDueDate]), 0) AS 'PO Date'
我试图简单地将它插入到 SQLCMD 脚本中,没有乐趣。然后我尝试剔除 AS 'PO DATE' 但这没有帮助。
我希望有人可以解释为什么这对我不起作用。
问候 瑞克
【问题讨论】:
-
您在尝试较小的 SAP sn-p 时会收到什么错误?
-
当我运行 .bat 时它不会显示错误消息 - 它只是闪烁并消失得太快。
-
在 .bat 的末尾添加
start "" cmd /c "echo QUERY RESULTS!&echo(&pause"以保持 cmd 窗口屏幕向上。
标签: sql sql-server sqlcmd sapb1