Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Временные таблицы через SqlCommand
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. WPF, C#, локальная БД MS SQL 2008, десктопная программа, VS 2010, .Net 4.0 Как можно создать временную таблицу используя SqlCommand, SqlConnection, SqlDataReader и пр? Или временные таблицы можно делать только в Management Studio? Суть задачи. Есть таблица с полем Weight и Comission, примерно такая: Weight | Comission 16 | 1.20 16 | 2.30 52 | 3.10 54 | 3.35 В запросе нужно округлить Weight до n в меньшую сторону и сгруппировать. Например, если n = 5, то результат должен быть таким: Weight | Comission 15 | 3.50 50 | 6.45 Делаю так: commandText = "Select Round(Weight/5,0)*5 As Weight, Sum(Comission) AS Comission From myTable Group by Weight" и получаю неправильный результат: Weight | Comission 15 | 3.50 50 | 3.10 50 | 3.35 Думаю, что самое простое это использовать временную таблицу, в нее сначала поместить округленные числа до n, а потом уже сгруппировать. Как использовать временную таблицу? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2014, 10:12 |
|
||
|
Временные таблицы через SqlCommand
|
|||
|---|---|---|---|
|
#18+
1. Group by Round(Weight/5,0)*5 2. Как вариант - Round(Weight/5,0)*5 вынести в cross apply, группировать по полю cross apply. 3. Через SqlCommand можно делать всё то же самое, что и в SSMS. Конструкции create table #mytable и select ... into #mytable никто не отменял. Но нужно помнить про visibility scope временных таблиц. 4. Вопрос для раздела по SQL Server, к SL/WPF он вообще никаким боком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2014, 13:16 |
|
||
|
Временные таблицы через SqlCommand
|
|||
|---|---|---|---|
|
#18+
Открыл для себя пакетные запросы))) Получилось так решить проблему. Сократил для наглядности Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Вот тут пишут, что нельзя в одном пакете создавать и удалять одну и ту же таблицу, но у меня вроде работает. До конца не уверен, что все верно, пока тестирую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2014, 13:32 |
|
||
|
Временные таблицы через SqlCommand
|
|||
|---|---|---|---|
|
#18+
Сон Веры Павловны1. Group by Round(Weight/5,0)*5 Да... тут я ступил жестко. Пожалуй, это самый простой способ в моем случае, наверное, на нем сейчас и остановлюсь. Сон Веры Павловны2. Как вариант - Round(Weight/5,0)*5 вынести в cross apply, группировать по полю cross apply. Пока не знаю что такое "cross apply". Почитаю Сон Веры Павловны3. Через SqlCommand можно делать всё то же самое, что и в SSMS. Конструкции create table #mytable и select ... into #mytable никто не отменял. Но нужно помнить про visibility scope временных таблиц. Да, вот тут уже прочитал "...Код исполняется в компоненте Database Engine одинаково и одними и теми же разрешениями независимо от того, как передаются его инструкции." Сон Веры Павловны4. Вопрос для раздела по SQL Server, к SL/WPF он вообще никаким боком. Я подумал, что там решат, что мне нужно это делать из SSMS Спасибо, Сон Веры Павловны! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2014, 13:48 |
|
||
|
|

start [/forum/topic.php?fid=21&fpage=23&tid=1441131]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 101ms |

| 0 / 0 |
