2017-03-04 75 views
-1

我有這個問題,不知道如何編寫正確的查詢來運行這個。使用SQL TeraData編碼的代碼

俄亥俄州有大量迪拉德的地點(總共21個)。俄亥俄州也是一個大而多樣的州。每家商店自然都有不同的業務量,本地客戶需要不同的產品。雖然這可以讓本地店鋪經理對自己的客戶進行判斷,但企業管理層會監控每家店鋪的財務結果。

最初,銷售經理想要將俄亥俄州的商店從總銷售額的最低美元數量調整到2005年的最高點。在您的查詢中,請記住只包含購買數量(stype ='P')。

我有這個疑問,我已經寫了,但錯誤3707這是代碼=

3707出現:語法錯誤,預計類似的名稱或單詞「之間的統一 分隔標識符stype'和'='。

我所寫的就是這個

SELECT saledate, stype, amt, SUM(amt) AS 「Total Dollar Volume」 
FROM trnsact 
WHERE state = 'OH' saledate BETWEEN '20050101AND '20051231' 
ORDER by sprice ASC 

我用我的教授已經提供了Teradata數據。

+0

您的查詢與錯誤消息不符。你可以展示你的實際選擇? – dnoeth

+0

@dnoeth我有stype ='P',而不是隻是stype。我如何詳細說明給我一個代碼的問題。 –

+0

你在選擇列表中哪裏有'stype ='P''?這應該是一個AND ANDED的WHERE條件。另外你需要使用store_id和GROUP BY它。 – dnoeth

回答

0

上有查詢需求許多語法錯誤和錯誤:

  • 您不關閉字面20050101

  • 你不把ANDWHERE state = 'OH'

  • 20050101AND之間沒有空格

  • 您不使用GROUP BY這是使用組函數作爲總和所需要的。此外,列出的amtsum(amt)沒有多大意義,因爲它的分組將列出每個商店的每個特定數量。此外,由於您的查詢看起來像是每個商店所有購買期間的簡歷,因此您不需要saledate。所以,你應該刪除amtsaledate領域

  • 你不要把條件stype='P',按要求

  • 你不店裏ID添加到字段列表。管理人員如何理解我們在讀取數據?

  • ORDER BY應該是SUM(amt)

所以,你的查詢應該成爲如下,假設辦理表對於每TRANSATION(購買等)的記錄,店鋪ID是在外地被稱爲store_id(你應該改變這個!)。

SELECT store_id, SUM(amt) AS "Total Dollar Volume" 
FROM trnsact 
WHERE state = 'OH' AND saledate BETWEEN date '2005-01-01' AND date '2006-01-01' - 1 AND stype='P' 
GROUP BY store_id 
ORDER by sum(amt) ASC 
+1

'saledate BETWEEN date'2005-01-01'AND date'2005-12-31''(and I would 'saledate BETWEEN date'2005-01-01'AND date'2006-01-01' - 1') –

+0

你是對的!編輯 – Massimo

+0

看起來您已經添加了OP正在使用的傾斜引號 - 數據庫可能會窒息這些。 – halfer