2013-07-30 21 views
-1

我有這個表:與組轉換成SQL

pedido data 
314 2013-04-05 00:00:00.000 
318 2013-04-05 00:00:00.000 
319 2013-04-05 00:00:00.000   
26025 2013-07-01 00:00:00.000 
26026 2013-07-01 00:00:00.000 
26026 2013-07-01 00:00:00.000 
26026 2013-07-01 00:00:00.000 
26026 2013-07-01 00:00:00.000 
26027 2013-07-01 00:00:00.000 
26029 2013-07-01 00:00:00.000 
26029 2013-07-01 00:00:00.000 

我想這樣的結果:

314  2013-04-05 
318  2013-04-05 
319  2013-04-05 
26025  2013-07-01 
26026  2013-07-01 
26027  2013-07-01 
26029  2013-07-01 

我有這個嘗試,但不工作:

select pedido,data from alteraca group by data,pedido order by pedido 

和這個:

select pedido, (CONVERT varchar(10),data,101) as fecha1 from alteraca 

此代碼爲我工作:

 select pedido, MIN (data) as data from alteraca 
     group by pedido order by pedido 

一個小細節如何,我可以只顯示日期部分

14  2013-04-05 
    318  2013-04-05 

14  2013-04-05 00:00:00.000 
    318  2013-04-05 00:00:00.000 

回答

2

你已經找到group by。請檢查文檔的確切語法。假設你想要最低的日期,你可以這樣做:

select 
    pedido, 
    min(data) as data 
from alteraca 
group by pedido 
order by pedido 

如果你只是想刪除重複:

select distinct 
    pedido, 
    data 
from alteraca 
order by pedido 

在這兩種情況下,你可以用(CONVERT varchar(10), data) as data交換date,如果你想要做一個轉換字符。

+0

刪除重複不工作 –

0

試試這個:

select Distinct pedido, CONVERT(varchar(10),data) as fecha1 from alteraca 
+0

不工作錯誤VARCHAR –

+0

對不起,我把錯誤的括號。請現在嘗試。 – Sonam

0

您的查詢已經是正確的!

select pedido,data from alteraca group by data,pedido order by pedido 

看看這個SQL Fiddle Demo

輸出(從小提琴):

PEDIDO DATA 
314   April, 05 2013 00:00:00+0000 
318   April, 05 2013 00:00:00+0000 
319   April, 05 2013 00:00:00+0000 
26025 July, 01 2013 00:00:00+0000 
26026 July, 01 2013 00:00:00+0000 
26027 July, 01 2013 00:00:00+0000 
26029 July, 01 2013 00:00:00+0000 
+0

這是正確的,但它是編寫'select distinct'的一種複雜方式。 – GolezTrol

0

由於您使用MSSQL 2008中,可以使用CAST(數據截至日期):

SELECT pedido, cast(min(data) as date) as data 
FROM table 
GROUP BY pedido 
ORDER BY pedido 

如果你想轉換爲char(10)或者使用早期版本的sqlserver,你可以使用這種語法,這裏的優點是你將始終在輸出上獲得相同的格式 - 就像你的問題中所描述的那樣:

SELECT pedido, convert(char(10), min(data), 120) as data 
FROM table 
GROUP BY pedido 
ORDER BY pedido