Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2013, 11:34   #1
Barmsl
Пользователь
 
Регистрация: 17.06.2011
Сообщений: 10
По умолчанию Переделать запрос из access на sql server

Есть запрос сделанный в access его необходимо переделать для sql server.

Код:
SELECT 
Товары.[ID товара],
 Товары.Товар, 
SUM(Поставки.[Количество товара]) AS Общий,
 SUM(-(getDate()>([Дата поставки]+[Срок реализации]*30))*[Количество товара]) AS Просроченный,
 SUM(-(getDate()<=([Дата поставки]+[Срок реализации]*30))*[Количество товара]) AS Не_Просроченный
FROM ([Категории товара] 
INNER JOIN Товары ON [Категории товара].[Название категории]=Товары.[Категория товара]) 
INNER JOIN Поставки ON Товары.[ID товара]=Поставки.[Индекс товара]
GROUP BY Товары.[ID товара], Товары.Товар;

Последний раз редактировалось Stilet; 12.11.2013 в 14:55.
Barmsl вне форума Ответить с цитированием
Старый 12.11.2013, 11:39   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

ну и в чем затруднения?
eval вне форума Ответить с цитированием
Старый 12.11.2013, 12:15   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SUM(-(getDate()>([Дата поставки]+[Срок реализации]*30))*[Количество товара])
И это работает в Access?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.11.2013, 14:48   #4
Barmsl
Пользователь
 
Регистрация: 17.06.2011
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
SUM(-(getDate()>([Дата поставки]+[Срок реализации]*30))*[Количество товара])
И это работает в Access?
Да. Все работает
Barmsl вне форума Ответить с цитированием
Старый 12.11.2013, 14:58   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Да. Все работает
А что эти две строки с суммами означают? Что они должны вычислять?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2013, 15:12   #6
Barmsl
Пользователь
 
Регистрация: 17.06.2011
Сообщений: 10
По умолчанию

Накапливать сумму товаров срок годности которых меньше системной даты.
Barmsl вне форума Ответить с цитированием
Старый 12.11.2013, 15:42   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от Barmsl Посмотреть сообщение
Накапливать сумму товаров срок годности которых меньше системной даты.
Не верю. По идее там еще IIF должен быть
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.11.2013, 19:08   #8
Barmsl
Пользователь
 
Регистрация: 17.06.2011
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Не верю. По идее там еще IIF должен быть
Посмотри вложение.
Вложения
Тип файла: rar БД магазина.rar (91.0 Кб, 7 просмотров)
Barmsl вне форума Ответить с цитированием
Старый 12.11.2013, 19:54   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SUM(-(getDate()>([Дата поставки]+[Срок реализации]*30))*[Количество товара])
Убедил. Да уж Видимо 1 при выполнении условия и 0 при не выполнении и умножается на к-во. Попробуй в таком духе оба SUM, остальное так же
Код:
SUM(CASE WHEN GETDATE()>DATEADD(dd,[Срок реализации]*30,[Дата поставки]) THEN -[Количество товара] ELSE 0 END) AS Просроченный
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.11.2013, 01:12   #10
Barmsl
Пользователь
 
Регистрация: 17.06.2011
Сообщений: 10
По умолчанию

Сделал так но теперь вылетает ошибка Недопустимое имя объекта "Категории товара" на пункте 5 .
Имена таблиц перепроверял.

1 SELECT Товары.[ID товара], Товары.Товар,
2 SUM(Поставки.[Количество товара]) AS Общий,
3 SUM(CASE WHEN GETDATE()>DATEADD(dd,[Срок реализации]*30,[Дата поставки]) THEN -[Количество товара] ELSE 0 END) AS Просроченный,
4 SUM(CASE WHEN GETDATE()<=DATEADD(dd,[Срок реализации]*30,[Дата поставки]) THEN -[Количество товара] ELSE 0 END) AS Просроченный
5 FROM [Категории товара]
6 INNER JOIN Товары ON [Категории товара].[Название категории]=Товары.[Категория товара]
7 INNER JOIN Поставки ON Товары.[ID товара]=Поставки.[Индекс товара]
8 GROUP BY Товары.[ID товара], Товары.Товар;
Barmsl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запрос в SQL server 2005 студенточка! Помощь студентам 0 17.12.2011 23:15
ПЕРЕДЕЛАТЬ ЗАПРОС ИЗ ACCESS в ADOQuery cokolik БД в Delphi 2 12.02.2011 18:38
Запрос sql server 2005 Progsenya SQL, базы данных 1 16.01.2011 20:30
Экспорт данных из SQL Server в Access Daniar БД в Delphi 0 02.12.2010 17:56
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09