2014-05-01 63 views
0

我正在将我的应用程序从DB2数据库迁移到sql server 2008,为此我必须根据sql server替换一些查询。更改DB2选择查询到SQL Server查询

我的查询是:

SELECT '' 
     || table1.openid AS OPENID, 
     table2.mfg_part_no, 
     table2.description, 
     binnumber, 
     storageid, 
     tracktime, 
     table1.userid 
FROM table1 
     LEFT JOIN table2 
       ON table2.openid = table1.openid 
     LEFT JOIN table3 
       ON table3.locationid = table2.locationid 
WHERE value = '14' 
     AND field = 'STATUSID' 
     AND tracktime > '2012-01-01 00:00:00.00' 
     AND tracktime < '2014-01-02 00:00:00.00' 

我怎么能写在SQL Server此查询?

+1

如果你尝试运行它,它会给你什么样的错误? – DaImTo

+0

它给出了以下错误。 '|'附近的语法不正确。 – Shrikant

+0

您可能想要'tracktime> ='2012-01-01 00:00:00',否则您将跳过午夜进来的任何内容。如果你想尝试2年的数据,你实际上需要'<'2014-01-01'' - 你现在拥有的是2年和1天。 –

回答

1

我想这会做到这一点:

SELECT cast(table1.openid as varchar(255)) AS OPENID, 
     table2.mfg_part_no, 
     table2.description, 
     binnumber, 
     storageid, 
     tracktime, 
     table1.userid 
FROM table1 
     LEFT JOIN table2 
       ON table2.openid = table1.openid 
     LEFT JOIN table3 
       ON table3.locationid = table2.locationid 
WHERE value = '14' 
     AND field = 'STATUSID' 
     AND tracktime > '2012-01-01' 
     AND tracktime < '2014-01-02' ; 

我看到的唯一DB2具体的事情是字符串连接运算符。我也从日期中删除了时间组件。这两个数据库都不需要。

+0

其工作.. :)谢谢 – Shrikant