powered by simpleCommunicator - 2.0.27     © 2024 Programmizd 02
Map
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как правильно присоединить наборы данных
8 сообщений из 8, страница 1 из 1
как правильно присоединить наборы данных
    #40134297
cad2206
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Получаю список последних 30 дней в формате yyyy-mm-dd dw так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
WITH CTE AS
(
    SELECT convert(date, GETDATE()) sDate
    UNION ALL
    SELECT DATEADD(DAY, -1, sDate)
    FROM CTE
    WHERE sDate > GETDATE() - 29
)
SELECT convert(varchar, sDate) + 
                       CASE DATEPART(WEEKDAY,CAST(sDate as varchar(10)))
		            WHEN 1 THEN ' Пн'
                            WHEN 2 THEN ' Вт'
                            WHEN 3 THEN ' Ср'
                            WHEN 4 THEN ' Чт'
                            WHEN 5 THEN ' Пт'
                            WHEN 6 THEN ' Сб'
                            WHEN 7 THEN ' Вс'
                       END [RunDt]

FROM CTE



И есть запрос SELECT, в результате выполнения которого так же есть поле даты в таком же формате. Но не пойму как этот результат сджойнить с верхним. Подскажите.
...
Рейтинг: 0 / 0
как правильно присоединить наборы данных
    #40134299
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cad2206
Добрый день.
Получаю список последних 30 дней в формате yyyy-mm-dd dw так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
WITH CTE AS
(
    SELECT convert(date, GETDATE()) sDate
    UNION ALL
    SELECT DATEADD(DAY, -1, sDate)
    FROM CTE
    WHERE sDate > GETDATE() - 29
)
SELECT convert(varchar, sDate) + 
                       CASE DATEPART(WEEKDAY,CAST(sDate as varchar(10)))
		            WHEN 1 THEN ' Пн'
                            WHEN 2 THEN ' Вт'
                            WHEN 3 THEN ' Ср'
                            WHEN 4 THEN ' Чт'
                            WHEN 5 THEN ' Пт'
                            WHEN 6 THEN ' Сб'
                            WHEN 7 THEN ' Вс'
                       END [RunDt]

, a.*
FROM CTE
inner join (ваш запрос) a сte.sDate= a.sDate 




И есть запрос SELECT, в результате выполнения которого так же есть поле даты в таком же формате. Но не пойму как этот результат сджойнить с верхним. Подскажите.
...
Рейтинг: 0 / 0
как правильно присоединить наборы данных
    #40134300
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cad2206

с верхним


Мутно излагаете.
Кто на ком стоял?
...
Рейтинг: 0 / 0
как правильно присоединить наборы данных
    #40134302
cad2206
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,

c верхним = с этим:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
WITH CTE AS
(
    SELECT convert(date, GETDATE()) sDate
    UNION ALL
    SELECT DATEADD(DAY, -1, sDate)
    FROM CTE
    WHERE sDate > GETDATE() - 29
)
SELECT convert(varchar, sDate) + 
                       CASE DATEPART(WEEKDAY,CAST(sDate as varchar(10)))
		            WHEN 1 THEN ' Пн'
                            WHEN 2 THEN ' Вт'
                            WHEN 3 THEN ' Ср'
                            WHEN 4 THEN ' Чт'
                            WHEN 5 THEN ' Пт'
                            WHEN 6 THEN ' Сб'
                            WHEN 7 THEN ' Вс'
                       END [RunDt]

FROM CTE
...
Рейтинг: 0 / 0
как правильно присоединить наборы данных
    #40134304
cad2206
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex,

в инструкции on сравнивать нужно именно RunDt, а не sDate
...
Рейтинг: 0 / 0
как правильно присоединить наборы данных
    #40134326
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cad2206
в инструкции on сравнивать нужно именно RunDt, а не sDate

cad2206
Код: sql
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.
WITH CTE AS
(
    SELECT convert(date, GETDATE()) sDate
    UNION ALL
    SELECT DATEADD(DAY, -1, sDate)
    FROM CTE
    WHERE sDate > GETDATE() - 29
)
SELECT convert(varchar, sDate) + 
                       CASE DATEPART(WEEKDAY,CAST(sDate as varchar(10)))
		            WHEN 1 THEN ' Пн'
                            WHEN 2 THEN ' Вт'
                            WHEN 3 THEN ' Ср'
                            WHEN 4 THEN ' Чт'
                            WHEN 5 THEN ' Пт'
                            WHEN 6 THEN ' Сб'
                            WHEN 7 THEN ' Вс'
                       END [RunDt]

, a.*
FROM CTE
inner join (ваш запрос) a convert(varchar, sDate) + 
                       CASE DATEPART(WEEKDAY,CAST(sDate as varchar(10))) 
		            WHEN 1 THEN ' Пн' 
                           WHEN 2 THEN ' Вт' 
                            WHEN 3 THEN ' Ср' 
                            WHEN 4 THEN ' Чт' 
                            WHEN 5 THEN ' Пт' 
                            WHEN 6 THEN ' Сб' 
                            WHEN 7 THEN ' Вс' 
                       END = a.sDate  

...
Рейтинг: 0 / 0
как правильно присоединить наборы данных
    #40134328
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg: "На что только люди не идут, что бы не делать таблицу-календарь :-(" 22433236

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare @b  date = getdate()  -- задаем исходную дату
      , @n  int  = 7          -- а здесь количество дней

declare @e  date = dateadd(day, @n-1, @b); -- находим конечную дату

with A as ( -- таблица чисел, полученная, например, так
  select row_number() over (order by 1/0) as num from sys.all_objects
)
, B  as ( -- календарь, полученный, например, так
  select dateadd(day, num, cast('20200101' as date)) as dd,
         datepart(weekday, dateadd(day, num, cast('20200101' as date))) as dw
    from A
) -- select * from B

select *
  from B  b 
 where dd between @b and @e


Результат:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
dd		dw
2022-02-15	3
2022-02-16	4
2022-02-17	5
2022-02-18	6
2022-02-19	7
2022-02-20	1
2022-02-21	2

и никакой рекурсии
...
Рейтинг: 0 / 0
как правильно присоединить наборы данных
    #40134452
cad2206
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался, всем спасибо
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как правильно присоединить наборы данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]