需要了解如何使用SQLCMD从SAP B1导出查询

时间:2014-01-28 12:57:31

标签: sap sqlcmd sapb1

我在工作时使用SAP B1,并希望在批处理文件中导出CSV文件,以便我可以每15分钟安排一次导出到网站上。

这就是我现在所拥有的:

SQLCMD -S SERVER-VMSQL -d SBO_COMPANYNAME -U sa -P adminpassword -Q "SELECT ItemCode, FrgnName, OnHand-IsCommited FROM OITM" -s "," -o "\\server-address\users\rick\TestBat.csv" -h-1 -s"," -W -w 999

这为我提供了一个包含以下列的CSV的导出:

  • 商品代码
  • 项目名称
  • 销售订单数量少

我需要详细说明这个查询以放入一些WHERE子句 - 例如WHERE:

  • U_Category ='Toys'(其中U_Category是用户定义的字段)
  • Qrygroup2 ='Y'

以上所有字段都在OITM表中。

另外 - 如何使用SQLCMD查询连接表? 我需要能够加入OITW表才能在WHERE子句中指定T1。[WhsCode] = '01。主。

非常感谢任何帮助!

此致 瑞克

2 个答案:

答案 0 :(得分:0)

你能澄清一下你还想做些什么吗? 我编写了VB.NET代码,并使用Windows任务调度程序每隔x分钟制作批处理文件来执行该代码。

你提到了OITM表,但也有ITM1表需要考虑,我发现在同一个查询中加入这两个表通常会给我所需的一切(就数据而言)来应用正确的where子句进行验证。

再一次,对于没有完全理解你的问题而道歉,但如果你能详细说明这个问题,我会很乐意尽力帮助你。

校准。

答案 1 :(得分:0)

没有什么可以阻止您在提供给SQLCMD的查询中使用WHEREJOIN子句。他们只是常规的SQL查询。

例如,以下是您提供的查询,其中包含您指定的限制:

SELECT OITM.ItemCode, OITM.FrgnName, OITM.OnHand-OITM.IsCommited
FROM OITM
   INNER JOIN OITW
       ON OITW.ItemCode = OITM.ItemCode
WHERE OITM.U_Category = 'Toys'
    AND OITM.Qrygroup2 = 'Y'
    AND OITW.WhsCode = '01. Main'

您只需向SQLCMD提供此查询,就像在OP中查询一样:

SQLCMD -S SERVER-VMSQL -d SBO_COMPANYNAME -U sa -P adminpassword -Q "SELECT OITM.ItemCode, OITM.FrgnName, OITM.OnHand-OITM.IsCommited FROM OITM INNER JOIN OITW ON OITW.ItemCode = OITM.ItemCode WHERE OITM.U_Category = 'Toys' AND OITM.Qrygroup2 = 'Y' AND OITW.WhsCode = '01. Main'" -s "," -o "\\server-address\users\rick\TestBat.csv" -h-1 -s"," -W -w 999