使用select和union all插入新列

时间:2017-06-27 03:39:44

标签: sql sql-server

我有一张产品表。

Create Table tblProduct
(
    ID int,
    Project_No int,
    OrderDate date
)

insert into tblProduct values (2580, 100, '2012-01-13')
insert into tblProduct values (2581, 101, '2012-01-21')
insert into tblProduct values (2582, 102, '2012-03-04')
insert into tblProduct values (2583, 103, '2012-02-14')

我需要与月份结合并根据订单日期给出如下输出(但我不想在输出结果中显示):

Jan   2580   100
Feb   2581   101
Mar   2582   102

但我个月没有单独的表格。

所以,我认为我必须使用SELECT.....UNION ALL来实现我想要的目标。

但我不知道如何使用。有人可以对此有所了解吗?

3 个答案:

答案 0 :(得分:1)

只需使用:

> System.DivideByZeroException: Attempted to divide by zero.    at
> System.Math.Log(Double a, Double newBase)

答案 1 :(得分:0)

我可以在不使用UNION ALL运算符的情况下获得所需的输出。

将您的查询执行到我的SSMS2014

create table tblProduct(
    ID int,
    Project_No int,
    OrderDate datetime
)

insert into tblProduct
values
(2581,100,'2012-01-13'),
(2581,101,'2012-01-21'),
(2582,102,'2012-03-04'),
(2583,103,'2012-02-14')

select * from tblProduct

enter image description here

select 
    LEFT(DATENAME(month,OrderDate),3) as DateColumn,
    ID,
    Project_No 
from tblProduct

enter image description here

更多阅读DATENAME

答案 2 :(得分:0)

谢谢你们的帮助。我终于弄明白并完全达到我想要的目的。

SELECT '1'As Mnth, ID as ProductID,Project_No,OrderDate
from T2
where month(OrderDate)=1
UNION 
select '2'As Mnth, ID as ProductID,Project_No,OrderDate
from T2
where month(OrderDate) =2
UNION 
select '3'As Mnth, ID as ProductID,Project_No,OrderDate
from T2
where month(OrderDate) =3
UNION 
select '4'As Mnth, ID as ProductID,Project_No,OrderDate
from T2
where month(OrderDate) =4

在这里,我不必为Month创建一个单独的表,而且我也不需要提前创建任何表来获得结果。

Results