2014-12-05 6 views
1

Я боролся с этим в течение последних нескольких дней, и все, что я делаю, похоже, не работает. Любая помощь будет очень высоко ценится. Это вопрос о домашнем задании, но я уже три дня терзал мозг, и мой профессор был НЕРОВО-ПОМОЩЬ.Создание новой таблицы с использованием данных из двух существующих таблиц

Какова моя дилемма? Я пытаюсь создать совершенно новую таблицу, используя столбцы и строки из двух существующих таблиц.

Вот что вопрос выглядит следующим образом:

Используя базу данных AP, создать новую таблицу под названием «Invoices2Qtr2012», который захватывает поставщика и счета-фактуры данные со второго квартала 2012 года для следующих атрибутов в счета-фактуры и Таблицы поставщиков: VendorName, InvoiceNumber, InvoiceTotal, InvoiceDueDate, PaymentDate.

Кроме того, укажите новый столбец, в котором указывается, был ли у всех платежей по факсу установленный срок или позднее, и еще один столбец, в котором указывается, какой поставщик имеет наибольший счет за каждый месяц. Этот должен включать только данные со второго квартала 2012 года

Вот структура таблиц:

счетов-фактур:

InvoiceId 
VendorID 
InvoiceNumber 
InvoiceDate 
InvoiceTotal 
PaymentTotal 
CreditTotal 
TermsID 
InvoiceDue 
PaymentDate 

Вендоры:

VendorID 
VendorName 
VendorAddress1 
VendorAddress2 
VendorCity 
VendorState 
VendorZipCode 
VendorPhone 
VendorContactLName 
VendorContactFName 
DefaultTermsID 
DefaultAccountNo 

Здесь это то, что у меня есть до сих пор для моего кода:

CREATE TABLE Invoices2Qtr2012 AS 
SELECT VendorName, InvoiceNumber, InvoiceTotal, InvoiceDueDate, PaymentDate 
FROM Invoices, Vendors 
WHERE InvoiceDate BETWEEN '2012-03-31' AND '2012-07-01' 
+0

Что я нахожу сложно об этом вопросе это последняя часть: столбец, который показывает, какой поставщик имел наибольший счет за каждый месяц. В таблице не будет отдельных записей для каждого поставщика, так как они хотят, чтобы вы указали это? Они хотят, чтобы вы поставили что-то вроде столбца «LargestThisMonth» и помещали в него «True», только если этот рекорд-месяц-рекорд является самым большим? –

+0

Типичный вопрос о домашнем задании - оставьте вас интерпретировать двусмысленности. –

+0

@roryap вот что я предполагаю. Ненавижу и двусмысленность этого вопроса. – jfritts6524

ответ

-1

Оператор SELECT INTO создаст для вас таблицу. Таким образом, ваш код будет:

SELECT INTO Invoices2Qtr2012 VendorName, InvoiceNumber, InvoiceTotal, InvoiceDueDate, PaymentDate 
FROM Invoices, Vendors 
WHERE InvoiceDate BETWEEN '2012-03-31' AND '2012-07-01' 

После этого я предлагаю создать соответствующие индексы, ключи и ограничения.

Таблица Invoices2Qtr2012 не должна существовать.

+0

Где дополнительные столбцы? «Кроме того, включите новый столбец, в котором указано, был ли установлен платеж по факту или поздно, и еще один новый столбец, в котором указывается, у какого поставщика был самый большой счет за каждый месяц. Это должно включать только данные со второго квартала 2012 года». –

+0

Из вопроса, похоже, проблема создания таблицы. Для этого мой ответ. –

0

Я уверен, что это может быть сведено к менее заявления и он не может работать на 100%, но, возможно, это может заставить вас начать или по крайней мере дать вам некоторое представление:

CREATE TABLE Invoices2Qtr2012 AS 
SELECT VendorName, InvoiceNumber, InvoiceTotal, InvoiceDueDate, PaymentDate, InvoiceDate 
FROM Invoices, Vendors 
WHERE InvoiceDate BETWEEN '2012-03-31' AND '2012-07-01' 

ALTER TABLE Invoices2Qtr2012 
ADD LateOnTime varchar(255) DEFAULT 'On time' 
ADD LargestInvoicePerMonth varchar(255) DEFAULT 'Not Largest' 

UPDATE Invoices2Qtr2012 
SET LateOnTime = 'Late' 
WHERE PaymentDate > InvoiceDueDate; 

UPDATE Invoices2Qtr2012 
SET LargestInvoicePerMonth = 'Largest for April' 
WHERE InvoiceTotal >= ALL (SELECT InvoiceTotal FROM Invoices2Qtr2012 WHERE InvoiceDate BETWEEN '2012-03-31' AND '2012-05-01') 

UPDATE Invoices2Qtr2012 
SET LargestInvoicePerMonth = 'Largest for May' 
WHERE InvoiceTotal >= ALL (SELECT InvoiceTotal FROM Invoices2Qtr2012 WHERE InvoiceDate BETWEEN '2012-04-31' AND '2012-06-01') 

UPDATE Invoices2Qtr2012 
SET LargestInvoicePerMonth = 'Largest for June' 
WHERE InvoiceTotal >= ALL (SELECT InvoiceTotal FROM Invoices2Qtr2012 WHERE InvoiceDate BETWEEN '2012-05-31' AND '2012-07-01') 
Смежные вопросы