我有一张员工出勤的表 - 让我们说 - OATT。以下是结构和样本数据
AttDate EmpId EmpName AttCode InTime OutTime 01-10-2009 1 Jain, Rahul P 0900 1830 02-10-2009 1 Jain, Rahul P 0900 1830 03-10-2009 1 Jain, Rahul P 0900 1830 04-10-2009 1 Jain, Rahul P 0900 1830 05-10-2009 1 Jain, Rahul P 0900 1830 06-10-2009 1 Jain, Rahul WO 0900 1830 07-10-2009 1 Jain, Rahul WO 0900 1830 08-10-2009 1 Jain, Rahul P 0900 1830 09-10-2009 1 Jain, Rahul L 0900 1830 10-10-2009 1 Jain, Rahul P 0900 1830 01-10-2009 1 Jain, Rahul A 0900 1830
我需要以下结果:
EmpId 01-10 02-10 03-10 04-10 05-10 1 P P P P P 2 P P P L P 3 P P P P A
我知道这可以使用数据透视查询来完成,但我需要一个动态查询来执行指定的日期范围。我正在使用SQL Server 2005。
答案 0 :(得分:1)
PIVOT关键字可能有所帮助,但即使这样,您仍需要在运行查询之前知道列的内容。这通常意味着运行两个查询:一个用于获取列名称列表,然后是第二个用于实际获取结果的查询。
答案 1 :(得分:1)
使用动态sql查看 similar question/answer 。
答案 2 :(得分:-1)
其中一个解决方案是make Query将TSQL代码打印成变量 然后调用exec @variable