2013-08-12 3 views
1

안녕하세요. 1데이터베이스에서 테이블로 데이터를 출력하는 방법은 무엇입니까?

구조 데이터베이스 :

내가 테이블 옆에 데이터베이스에서 데이터를 선택하고자하고

SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

SET ANSI_PADDING ON 
GO 

CREATE TABLE [dbo].[ExPRoG_Statistic_banners](
    [id] [int] IDENTITY(1,1) NOT NULL, 
    [user_id] [varchar](50) NULL, 
    [banner_idn] [varchar](50) NULL, 
    [banner_page] [varchar](150) NULL, 
    [action] [varchar](50) NULL, 
    [datetime] [datetime] NULL, 
    [server_referer] [varchar](150) NULL, 
    [ip] [varchar](50) NULL, 
    [browser] [varchar](500) NULL, 
    [id_firm] [varchar](50) NULL 
) ON [PRIMARY] 

GO 

SET ANSI_PADDING OFF 
GO 
선택 데이터의 경우

내가 사용을 스크립트

SELECT * FROM ExPRoG_Statistic_banners WHERE banner_idn='50927853' 

그러나 나는 테이블에있는 모든 데이터를 선택하는 것을보고, 31 select (매일)를 사용해야합니다.

더 적은 수의 데이터 요청을 사용하여 데이터를 선택하는 방법에 대한 아이디어가있는 사람이 있습니까?

답변

1

보십시오이 한 -

DECLARE @temp TABLE 
(
     items INT 
    , dt DATETIME 
    , [user_id] INT 
) 

INSERT INTO @temp (items, dt, [user_id]) 
VALUES 
    (1, '2013-08-08 00:00:000', 2), 
    (2, '2013-08-06 00:00:000', 1), 
    (5, '2013-08-05 00:00:000', 2), 
    (3, '2013-08-03 00:00:000', 1), 
    (2, '2013-08-02 00:00:000', 1), 
    (2, '2013-08-01 00:00:000', 1) 

SELECT * 
FROM (
    SELECT 
      items 
     , [user_id] 
     , [day] = DAY(dt) 
    FROM @temp 
    WHERE dt BETWEEN '2013-08-01' AND '2013-08-31' 
) src 
PIVOT 
(
    SUM(items) FOR [day] IN (
     [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], 
     [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], 
     [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31]) 
) pvt 
+0

을 원하는 것 같습니다'하면'날짜 = '2013-08-08 00 : 00 : 000''? –

+0

업데이트 된 답변을 참조하십시오. '선택 일 ('2013-08-08 00 : 00 : 000') = 8' – Devart

+0

괜찮습니다.) –

1

당신이 [일] = DAY (날짜)`얼마나 제발 분에게 pivot

select * 
from 
(
    select id, DATEPART(d,[datetime]) dm from yourtable) s  
pivot (count(id) for dm in 
([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],-- etc... 
) 
) p 
+0

'[day] = DAY datetime)'if datetime = '2013-08-08 00 : 00 : 000''? P .: 오류가 발생합니다. '표현식을 데이터 유형 int로 변환하는 산술 오버플로 오류입니다 .' –

관련 문제