Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Запрос SQL
|
|||
|---|---|---|---|
|
#18+
Есть база: W Sh Cash 1 11 1234 1 11 5678 1 12 1256 1 12 8758 2 11 2543 2 13 8988 2 13 2314 3 14 2345 4 14 7634 Вопрос: как преобразовать ее к виду W Sh11 Sh12 Sh13 Sh14 1 2 3 4 ? где в каждом столбце стоит "select summ(cash) where W=1" (первая строка), "select summ(cash) where W=2" (вторая строка) и т.д. т.е. один group by Shop расписан по горизонтали в виде новых полей. заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2002, 14:57 |
|
||
|
Запрос SQL
|
|||
|---|---|---|---|
|
#18+
Можно так: SELECT W ,SUM(CASE SH WHEN 11 THEN Cash ELSE 0) AS Sh11 ,SUM(CASE SH WHEN 12 THEN Cash ELSE 0) AS Sh12 ,SUM(CASE SH WHEN 13 THEN Cash ELSE 0) AS Sh13 ,SUM(CASE SH WHEN 14 THEN Cash ELSE 0) AS Sh14 FROM table GROUP BY W Если кол-во Sh переменное, то без DSQL не обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2002, 15:17 |
|
||
|
Запрос SQL
|
|||
|---|---|---|---|
|
#18+
сорри, SELECT W ,SUM(CASE SH WHEN 11 THEN Cash ELSE 0 END) AS Sh11 ,SUM(CASE SH WHEN 12 THEN Cash ELSE 0 END) AS Sh12 ,SUM(CASE SH WHEN 13 THEN Cash ELSE 0 END) AS Sh13 ,SUM(CASE SH WHEN 14 THEN Cash ELSE 0 END) AS Sh14 FROM table GROUP BY W ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2002, 15:23 |
|
||
|
Запрос SQL
|
|||
|---|---|---|---|
|
#18+
Так то оно так, но если в базе добавятся записи с новыми Sh (например, 22 какой-нибудь), этот запрос этого не выведет.. Нельзя ли написать универсальный запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2002, 16:00 |
|
||
|
Запрос SQL
|
|||
|---|---|---|---|
|
#18+
2 Gramer: Если это делать средствами TSQL, получится тошнотворная stored procedure. Поищите в BOL по "pivot table". Как-то это решается с привлечением Excel. И где-то давным-давно я видел Pivot Table Wizard, только не помню где. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2002, 16:37 |
|
||
|
Запрос SQL
|
|||
|---|---|---|---|
|
#18+
При переменном числе столбцов - одним универсальным запросом нельзя. Только DSQL. (Кстати, не так уж и тошнотворно...) DECLARE @Sh int DECLARE @SelectSQL varchar(1000) SET @SelectSQL = 'SELECT W' DECLARE cur CURSOR FOR SELECT DISTINCT Sh FROM table ORDER BY Sh OPEN cur FETCH NEXT FROM cur INTO @Sh WHILE @@FETCH_STATUS = 0 BEGIN SET @SelectSQL = @SelectSQL + ', SUM(CASE Sh WHEN ' + LTRIM(@Sh) + ' THEN Cash ELSE 0 END) AS [Sh' + LTRIM(@Sh) +']' FETCH NEXT FROM cur INTO @Sh END CLOSE cur DEALLOCATE cur EXECUTE (@SelectSQL + ' FROM table GROUP BY W') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2002, 17:14 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32022933&tid=1823911]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 438ms |

| 0 / 0 |
