需要将2个语句组合成1

时间:2014-04-03 03:07:35

标签: sql sql-server excel pivot-table

好吧,它的长短......

拥有在Excel中运行的2008 r2 SQL查询并驱动数据透视表/图表。设计这个数据库的一些天才(我的意思是字面意思,因为它们可能比我更聪明的1000倍)有一个重要的日期列在属性中列为'日期'。那你说什么???

excel不会允许数据透视图/表按月分组(这是它的缺点)。 excel中没有任何东西可以工作,如果我格式化单元格等等......它都会恢复刷新数据等等......没有什么可以解决这个问题而且不能使用宏,因为我的Org不允许它。

SO MY FIX ......

将'date'转换为varchar,然后从varchar转换为datetime ...效果很好,看起来像这样:

(CONVERT(varchar(10), [TestDate], 20)) as 'Date1',
(CONVERT(datetime, [TestDate], 20)) as 'Date2',

现在我的问题......

任何人都可以帮助我将这两个语句组合成一个只产生一个名为'Date'的列

已经很晚了,我的大脑在给我2杯咖啡之前给了我...这位新手非常感谢..

编辑:因为它显然最终得到了2个带有'date1'和'date2'标签的列。

2 个答案:

答案 0 :(得分:4)

你需要嵌套它们。您获取Date1的内容并将其放在Date2内以代替列名称。这将是它在SQL服务器中的工作方式

  

(CONVERT(datetime,(CONVERT(varchar(10),[TestDate],20)),20))' Date2'

答案 1 :(得分:0)

如果您要删除time部分,可以使用以下解决方案避免这些转换:

DECLARE @TestDate DATETIME;
SET     @TestDate = GETDATE();
SELECT  DATEADD(DAY, DATEDIFF(DAY, 0, @TestDate), 0) AS Sol1
SELECT  DATEADD(DAY, DATEDIFF(DAY, {d '1900-01-01'}, @TestDate), {d '1900-01-01'}) AS Sol2

注意:日期时间0 = 1900-01-01