|
Временные таблицы через 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: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 302ms |
total: | 436ms |
0 / 0 |