Требуется справка по SQL-запросам - PullRequest
0 голосов
/ 04 февраля 2012

У меня есть следующий запрос для получения данных за предыдущие 45 дней

SELECT evening + morning + calve_milk AS Total_Today, 
       CONVERT (VARCHAR(6), m_date, 6) AS Date 
FROM Status 
WHERE (m_date < (SELECT MAX(m_date) AS Expr1 FROM Status AS Status_2))
   AND (m_date > (SELECT MAX(m_date) AS Expr1 FROM Status AS Status_1) - 45) 
   AND (animal_code = @animal_code) 
GROUP BY evening + morning + calve_milk, m_date 
ORDER BY m_date

Когда данные извлекаются с, столбец даты выглядит следующим образом

Jan 01
Jan 02
Jan 03
Jan 04
ans so on till the jan ends
Feb 01
Feb 02
Feb 03

Мой вопрос заключается вМожно ли пропустить повторение JAN и FEB, когда каждая дата и дата должны выглядеть следующим образом

Ответы [ 3 ]

6 голосов
/ 04 февраля 2012

Возможно, конечно, разумно, возможно, нет.

Вы должны получать свои данные с помощью SQL и форматировать данные в приложении переднего плана (например, Reporting Services, Excel и т.

0 голосов
/ 04 февраля 2012
with CTE AS (
select mnth
,stats
,row_number() over(partition by mnth order by mnth) rn
from you_Table
)
select case when rn>1 THEN '' Else mnth END, stats
FROM CTE 
0 голосов
/ 04 февраля 2012

Вот как вы можете это сделать. Это пример с другой таблицей. Это создает все. Вы можете просто запустить его и посмотреть, как он работает:

DROP TABLE CURSOR_EXAMPLE
GO
CREATE TABLE CURSOR_EXAMPLE
(TEXT VARCHAR(8),VALUE BIGINT)
GO
INSERT INTO CURSOR_EXAMPLE
VALUES ('Jan',1)
INSERT INTO CURSOR_EXAMPLE
VALUES ('Jan',2)
INSERT INTO CURSOR_EXAMPLE
VALUES ('Feb',1)
INSERT INTO CURSOR_EXAMPLE
VALUES ('Feb',2)
INSERT INTO CURSOR_EXAMPLE
VALUES ('Mar',1)
INSERT INTO CURSOR_EXAMPLE
VALUES ('Mar',2)
INSERT INTO CURSOR_EXAMPLE
VALUES ('Apr',1)
INSERT INTO CURSOR_EXAMPLE
VALUES ('Apr',2)
GO

DECLARE @var_Current_TEXT VARCHAR(8);
DECLARE @text VARCHAR(8);
DECLARE @value BIGINT;

CREATE TABLE #TempResult
(TEXT VARCHAR(8),VALUE BIGINT)


DECLARE cu_CURSOR_EXAMPLE CURSOR FOR  
SELECT 
    TEXT
    ,VALUE
FROM CURSOR_EXAMPLE

OPEN cu_CURSOR_EXAMPLE  
FETCH NEXT FROM cu_CURSOR_EXAMPLE INTO @text, @value 

SET @var_Current_TEXT = ''
WHILE @@FETCH_STATUS = 0  
BEGIN  
    IF (@var_Current_TEXT <> @text)
        INSERT INTO #TempResult
        VALUES (@text, @value); 
    IF  (@var_Current_TEXT = @text)
        INSERT INTO #TempResult
        VALUES ('', @value); 

   SET @var_Current_TEXT = @text
   FETCH NEXT FROM cu_CURSOR_EXAMPLE INTO @text, @value
END 
CLOSE cu_CURSOR_EXAMPLE  
DEALLOCATE cu_CURSOR_EXAMPLE

SELECT * FROM  #TempResult

DROP TABLE #TempResult
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...