Скрипт замены данных из списка
Всем привет! Имеется sql запрос, в рамках которого хотелось бы его размножить на все имеющиеся сервера.
SELECT COUNT(*), SUM(changecash) FROM consolidation.set000_cashpayment
UNION ALL
SELECT COUNT(*), SUM(changecash) FROM setretail.set000_cashpayment where id <= (select max(id) from consolidation.set000_cashpayment );
Хотелось бы увидеть его в таком формате:
SELECT COUNT(*), SUM(changecash) FROM consolidation.set000_cashpayment
UNION ALL
SELECT COUNT(*), SUM(changecash) FROM setretail.set000_cashpayment where id <= (select max(id) from consolidation.set000_cashpayment );
SELECT COUNT(*), SUM(changecash) FROM consolidation.set001_cashpayment
UNION ALL
SELECT COUNT(*), SUM(changecash) FROM setretail.set001_cashpayment where id <= (select max(id) from consolidation.set001_cashpayment );
SELECT COUNT(*), SUM(changecash) FROM consolidation.set002_cashpayment
UNION ALL
SELECT COUNT(*), SUM(changecash) FROM setretail.set002_cashpayment where id <= (select max(id) from consolidation.set002_cashpayment );
Причем нумерация в моем случае идет от 000 до 019 с пропуском кодов 009,013. Как это возможно реализовать без Ctrl + F и Ctrl + H Всем заранее спасибо!
Ответы (2 шт):
Можно сделать выборку из sys.objects, добавив фильтр по имени like 'set[0-9][0-9][0-9]_cashpayment', и вы получите список нужных таблиц. Далее на его основе строить динамический запрос.
Не знаю почему модераторы убрали все теги, кроме SQL, админ им судья.
Проблему решил написанием скрипта autohotkey. Выделяем текст со значениями 001 и нажимаем ALT+1, получаем размноженную строчку с исключениями 9, 13 магазинов.
!1::
adress := A_Temp "\Loop.txt"
Send ^c
file := FileOpen(adress, "w")
Loop
{
if a_index > 19
break ; Terminate the loop
else if a_index = 9
continue ; Skip the below and start a new iteration
else if a_index = 13
continue ; Skip the below and start a new iteration
else
{
if a_index < 10
{
NewStr := StrReplace(Clipboard, "001", 00 . a_index)
}
else
{
NewStr := StrReplace(Clipboard, "001", 0 . a_index)
}
file.WriteLine(NewStr)
}
}
file.Close()
file := FileOpen(adress, "r")
TestString := file.Read()
file.Close()
FileDelete, adress
Clipboard := TestString
Send ^v
Return