我想知道我是否可以在SQL Server 2008中自动执行查询的问题上获得帮助。我的目标是使用" CUSTOMER_ID&#从数据库中的多个表中提取相关的客户数据34;链接WHERE子句中的所有表。此外,我自动执行此查询,使其每天运行,从前一天输入的信息,并将其导出到excel文件,在那里它被逮捕到已经收集的信息。
现在这是我到目前为止:
SELECT DISTINCT
[table1].CUSTOMER_ID AS "Customer ID",
[table2].CUSTOMER_ROOM AS "Room",
[table3].LAST_NAME AS "Last",
[table3].FIRST_NAME AS "First",
[table3].SEX AS "Sex",
[table3].AGE AS "Age",
[table4].CHECK_IN_TIME AS "CheckIn",
[table4].CHECK_OUT_TIME AS "Checkout",
[table4].HOTEL_LOCATION AS "Hotel",
[table4].HOTEL_ID AS "Hotel ID",
[table5].PLANE_ARRIVAL AS "Plane Arrival",
[table5].PLANE_DEPART AS "Plane Departure",
[table6].LOG_CREATE_TIME
FROM
[table1]
INNER JOIN
[table2] ON [table2].CUSTOMER_ID =[table1].CUSTOMER_ID
INNER JOIN
[table3] ON [table3].CUSTOMER_ID =[table1].CUSTOMER_ID
INNER JOIN
[table4] ON [table4].CUSTOMER_ID =[table1].CUSTOMER_ID
INNER JOIN
[table5] ON [table5].CUSTOMER_ID =[table1].CUSTOMER_ID
INNER JOIN
[table6] ON [table6].CUSTOMER_ID =[table1].CUSTOMER_ID
WHERE
[HOTEL_ID] LIKE '02%' AND
DATEPART(year, [table6].LOG_CREATE_TIME)=2015 AND
DATEPART(month[table6].LOG_CREATE_TIME) between 04 and 05 AND
[table4].HOTEL_LOCATION= '003'
上面的语句提取了我需要的信息,但它在某些情况下会返回重复的信息,我想在正确的方向上轻推一下,我应该如何在最后编辑DATEPART(LOG_CREATE_TIME)部分,以便它只是寻找前一天发布的新条目。截至目前,我显然只是为了测试我的查询而整整几个月。
至于自动化,我计划使用SQL Server 2008的导出向导将其指向一个Excel文件,然后告诉SQL Server代理每晚都运行SSIS包但是发出我的问题。我现在看到的是这种方法会覆盖excel文件中包含的先前信息。有没有办法理解文件中的新信息?
答案 0 :(得分:0)
要回答您的DATEPART问题,请尝试以下操作:
AND [table6].LOG_CREATE_TIME between convert(date, getdate() -1) and convert(date, getdate())
只需删除您的月份和年份DATEPART语句即可。这将从昨天的午夜到今天的午夜从LOG_CREATE_TIME返回每条记录。这应该解决您的重复数据问题,假设一些事情:
您可以考虑使用位字段跟踪已导出的记录,并更改查询以提取尚未导出的所有记录。