如何在SQL的临时表设置为了
在#temp表,我让我的价值观如何在SQL的临时表设置为了
Month Sales
JUN 2015 600.00
JAN 2015 5000.00
MAR 2015 3500.00
MAY 2015 1000.00
FEB 2015 1500.00
APR 2015 1400.00
如何通过每月更新#TEMP桌子以维持秩序,并通过修改变化改变表,我用order by DATEPART(mm,CAST(Substring(Month, 1, CharIndex(' ', Month) - 1)+ ' 1900' AS DATETIME)) asc
但#TEMP选择发射时的变化没有反映
预期输出:
Month Sales
JAN 2015 5000.00
FEB 2015 1500.00
MAR 2015 3500.00
APR 2015 1400.00
MAY 2015 1000.00
JUN 2015 600.00
因此,下一次如果我做select * from #temp
,我应该得到预期的输出
declare @t table (Month varchar(10),sales decimal(18,2))
insert into @t (Month,sales)values ('JUN 2015',600.00),
('JAN 2015', 5000.00),
('MAR 2015',3500.00),
('MAY 2015',1000.00)
select MONTH,sales from @t order by DATEPART(MM,month)
它是同样的事情,我正在做,你选择,但正如我所说,它不是我最后的选择,所以我需要这张表是为进一步过程的预期,我也试图得到这个输出在另一个临时表,但它没有工作 – Steph
使您的临时表具有一个附加整数,自动递增(identity
)主键列。现在,当您按照特定顺序插入该表格时,此订单将保留。
编辑
由于订单只能计算临时表中的内容已经被组装后,引入额外的整数列(id
)的 - 不标识列 - 可能的帮助。这应该通过合适的update
语句设置为该月的数字等值,然后可用于对临时表的内容进行排序。请看这里的一个小例子:http://data.stackexchange.com/*/query/336013/default-order-of-temp-table?opt.textResults=true
但是在任何情况下,必须始终使用order by id
子句。
试试这个:
只是做CAST(MonthVal AS DATE)
DECLARE @Table TABLE
(MonthVal VARCHAR(10), Sales DECIMAL(8,2))
INSERT INTO @Table
VALUES
('JUN 2015', 600.00),
('JAN 2015', 5000.00),
('MAR 2015', 3500.00),
('MAY 2015', 1000.00),
('FEB 2015', 1500.00),
('APR 2015', 1400.00)
SELECT
*
FROM
@Table
ORDER BY
CAST(MonthVal AS DATE)
不错和短。请记住:在SQL Server 2k8之前不起作用 – CeOnSql
不使用'ORDER BY'没有用于显示一个排序结果任何保证)。 –
如何在临时表中插入值? –
使用'select * into #temp from(select * from userid = @ userid)'我也尝试过使用这里的命令,但是我没有得到预期的输出 – Steph