"Конструкция или оператор declare SQL не поддерживается" в GridView visual studio 2015
Привет.
У меня есть этот запрос, используя оператор UNPIVOT SQL. Когда я запускаю запрос на SQL server, он выполняется и выдает желаемый результат. Но когда я хочу использовать тот же запрос на функцию Gridview в Visual Studio 2015, используя VB , он говорит, что " конструкция или оператор Declare SQL не поддерживается." Итак, как мне нужно переставить оператор UNPIVOT SQL, поскольку он не поддерживается в gridview?
Что я уже пробовал:
declare @MyTable table( [Total Interest] money, [Total Principal] money, [Total Penalty] money, [Total Charged] money ) insert into @MyTable select (SELECT SUM([Total Interest Overdue(MYR)]) AS [Total Interest Overdue(MYR)] FROM (SELECT SUM(l.interestOverdue) * d.bidspotrate AS [Total Interest Overdue(MYR)] FROM Loan AS l INNER JOIN Danadb AS d ON l.currency = d.ccycode GROUP BY d.bidspotrate) AS [Total in MYR] ), (SELECT SUM([Total Principal Overdue(MYR)]) AS [Total Principal Overdue(MYR)] FROM (SELECT SUM(l.principalOverdue) * d.bidspotrate AS [Total Principal Overdue(MYR)] FROM Loan AS l INNER JOIN Danadb AS d ON l.currency = d.ccycode GROUP BY d.bidspotrate) AS [Total in MYR] ), (SELECT SUM([Total Penalty Overdue(MYR)]) AS [Total Penalty Overdue(MYR)] FROM (SELECT SUM(l.penaltyOverdue) * d.bidspotrate AS [Total Penalty Overdue(MYR)] FROM Loan AS l INNER JOIN Danadb AS d ON l.currency = d.ccycode WHERE (l.source = 'Excel ') GROUP BY d.bidspotrate) AS [Total in MYR]), ( select sum([Total Charged Overdue(MYR)]) as [Total Charged Overdue(MYR)] from (select (SUM (l.chargedOverdue) * d.bidspotrate) as [Total Charged Overdue(MYR)] from loan l, danadb d where l.currency=d.ccycode group by d.bidspotrate) as [Total in MYR]) select [Type], [Total] from (select * from @MyTable) Src unpivot ([Total] for [Type] in ([Total Interest],[Total Principal],[Total Penalty],[Total Charged])) Res
Результатом запроса является
Тип / Всего
Общая Сумма Процентов | 10039176.9812
Итого Основной Капитал | 92207576.6798
Общий Штраф | 91959.7905
Итого Начислено / 21677.153
-------------------------------------------------------------------
Второй запрос, который я попробовал, это
выберите [всего]
от
(
выберите (Выбрать сумма([сумма просроченных процентов]), как [общая сумма процентов просроченных] из (выбрать сумма(Л. Д. interestOverdue) * д. bidspotrate как [общая сумма процентов просроченных] от кредита а л внутреннее соединение Danadb А Д О Л.валюта = д.группа ccycode д. bidspotrate) как [общее в мир] ), как [интерес],
(Выбрать сумма([общая сумма просроченной]), как [Итого основные просроченных] из (выбрать сумма(Л. Д. principalOverdue) * д. bidspotrate как [Итого основные просроченных] от кредита а л внутреннее соединение Danadb А Д О Л.валюта = д.группа ccycode д. bidspotrate) как [Итого, в мире] ) [основные],
(Выбрать сумма([сумма взыскания просроченной]), как [общая взыскания просроченной] из (выбрать сумма(Л. Д. penaltyOverdue) * д. bidspotrate как [общая взыскания просроченной] от кредита а л внутреннее соединение Danadb А Д О Л.валюта = д.ccycode где (л.группа источник = 'Exсel ') исполнителя D.bidspotrate) как [Итого, в мире]) [наказание],
(выберите сумму ([общая сумма начисленных просроченных платежей]) в качестве
[Общая сумма начисленных просроченных платежей] from (select (SUM (l. chargedOverdue) * d. bidspotrate) as
[Общая сумма начисленной просроченной задолженности] по кредиту l, danadb d, где l. currency=d. ccycode group by d. bidspotrate) как [Итого в MYR]) [Заряжено]) d
оператор UNPIVOT
(
[Итого] на сумму в ([проценты], [основная сумма], [штраф], [начислено])) pvt1
Результат выглядит следующим образом
ВЕСЬ
--------------
10039176.9812472
92207576.6797772
91959.790477519
21677.1530053711
Я хочу, чтобы появился еще один столбец типа TYPE, но я не знал, как это сделать .
Dave Kreskowiak
В этом нет никакого смысла. GridView не выполняет SQL, так Какой же код вы запускаете, чтобы попытаться выполнить этот SQL?
Member 12882545
О, я использую SQLDataSource для привязки SQL-оператора и gridview. Когда я просто использую SQL-оператор типа "select name, address from company" с помощью SQLDataSource, данные можно просмотреть. Но когда я использую оператор UNPIVOT SQL, он показывает ошибку.
Dave Kreskowiak
Снова покажите код. То, что ты говоришь, не имеет смысла.
Member 12882545
Это код, который я использую
объявить таблицу @MyTable(
[Общий процент] деньги,
[Общая сумма основного долга] деньги,
[Общий штраф] деньги,
[Общая сумма начисленных] денег
)
вставить в @MyTable
выберите (Выбрать сумма([сумма просроченных процентов(мыр)]), а [общая сумма процентов просроченной(мыр)] из (выбрать сумма(Л. Д. interestOverdue) * д. bidspotrate как [Итого проценты просроченные(мыр)] в кредит а л внутреннее соединение Danadb А Д О Л.валюта = д.группа ccycode д. bidspotrate) как [Итого в мире] ),
(Выбрать сумма([общая сумма просроченной(мыр)]), а [общая сумма просроченной(мыр)] из (выбрать сумма(Л. Д. principalOverdue) * д. bidspotrate как [общая сумма просроченной(мыр)] в кредит а л внутреннее соединение Danadb А Д О Л.валюта = д.группа ccycode д. bidspotrate) как [Итого в мире] ),
(Выбрать сумма([сумма взыскания просроченной(мыр)]), как [Итого просроченная неустойка(мыр)] из (выбрать сумма(Л. Д. penaltyOverdue) * д. bidspotrate как [Итого просроченная неустойка(мыр)] в кредит а л внутреннее соединение Danadb А Д О Л.валюта = д.ccycode где (л.группа источник = 'Exсel ') исполнителя D.bidspotrate) как [Итого в мире]),
( выбрать сумма([сумма списана просроченная(мыр)]) как
[Общая сумма начисленной просрочки (MYR)] from (select (SUM (l. chargedOverdue) * d. bidspotrate) as
[Общая сумма начисленной просроченной задолженности (MYR)] из кредита l, danadb d, где l. currency=d. ccycode group by d. bidspotrate) как [всего в MYR])
выберите [тип], [Итого] из
(выбрать * из таблицы mytable) ФОК
оператор unpivot ([общего] для [тип] в ([процентные],[общая сумма],[сумма штрафа],[общая заряженных])) Рес
Когда я запускаю код на SQL Server,он дает желаемый результат. Но когда я хочу использовать тот же код на SQLDataSource , на gridview с помощью Visual Studio 2015, он показывает эту ошибку "конструкция или оператор Declare SQL не поддерживается".
Dave Kreskowiak
- Нет! Код в вашем приложении, который вы запускаете для выполнения этого оператора!
Member 12882545
Извините, у меня нет никакого приложения кода as, я просто использую тот же код в SQLDataSource для выполнения кода на Gridview.
CHill60
Уже поздно, так что я могу быть так далеко от базы, но если это работает в вашей среде SQL, но не в вашем коде ... вы уверены, что подключаетесь к одной и той же версии SQL? На самом деле вы еще не показали код, который используете для заполнения GridView. Другой вопрос на самом деле звучит так: "мой запрос неверен, как мне это исправить", так с какой проблемой вы обращаетесь за помощью?
Member 12882545
Да, я на 100% уверен, что подключаюсь к той же версии SQL. Я использую тот же запрос, что и (первый запрос) для заполнения gridview. Я просто хочу знать , как перестроить первый запрос, чтобы он мог показывать свои данные на gridview?
CHill60
Как вы заполняете gridview? Например, вы связываете данные?
Member 12882545
Да, я использую SQLDataSource
Dave Kreskowiak
Для этого вы используете элементы управления данными в панели инструментов. Я бы настоятельно рекомендовал вам этого не делать. Напишите код для выполнения запроса самостоятельно, и вы получите гораздо больше контроля над кодом и не будете иметь кучу функций, скрытых от вас дизайнерами.
Herman<T>.Instance
@Table находится в таблице памяти в базе данных. Он будет работать, если вы создадите хранимую процедуру (SP) с этим SQL-кодом и вызовете SP из своего приложения
Member 12882545
ну ладно . Теперь я понимаю, Спасибо за объяснение :)