UNION 的問題(有更好的作法嗎? 懇請告知) |
答題得分者是:andersonhsieh
|
firefall
一般會員 發表:22 回覆:36 積分:11 註冊:2002-05-14 發送簡訊給我 |
請問各位先進: 解說如下:
有個單一表格A(全年度)中含
[出貨日期][貨品類別][貨品編號][出貨數量] 小弟想得到七、八月份的出貨統計如下
[貨品編號]][貨品類別][七月出貨量]][八月出貨量]][本貨品全部出貨量] 由於是單一表格,小弟用自連方式取得,用QUERY宣告如下
SELECT 貨品編號,貨品類別,SUM(出貨數量) AS 七月出貨量,0 AS 八月出貨量,0 AS 本貨品全部出貨量 FROM A WHERE (EXTRACT(MONTH FROM 出貨日期)=7) GROUP BY 貨品編號,貨品類別
UNION
SELECT 貨品編號,貨品類別,0 AS 七月出貨量,SUM(出貨數量) AS 八月出貨量,0 AS 本貨品全部出貨量 FROM A WHERE (EXTRACT(MONTH FROM 出貨日期)=8) GROUP BY 貨品編號,貨品類別
UNION
SELECT 貨品編號,貨品類別,0 AS 七月出貨量,0AS 八月出貨量, SUM(出貨數量) AS 本貨品全部出貨量 FROM A GROUP BY 貨品編號,貨品類別 可得出小弟要的格式,但問題出現了,小弟RUN 後結果如下 [貨品編號]][貨品類別][七月出貨量]][八月出貨量]][本貨品全部出貨量]
[A0001] [2] [132] [0] [0]
[A0001] [2] [0] [276] [0]
[A0001] [2] [0] [0] [1439]
.
.
. 請問各位先進該如何把上述的三個列合為一列
或是有更好的作法請告知小弟,
謝謝!!
|
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
SELECT A9.貨品編號,A9.貨品類別,
A7.七月出貨量,A8.八月出貨量,A9.本貨品全部出貨量
FROM
(SELECT 貨品編號,貨品類別,SUM(出貨數量) AS 七月出貨量 FROM A WHERE (EXTRACT(MONTH FROM 出貨日期)=7) GROUP BY 貨品編號,貨品類別)
A7,
(SELECT 貨品編號,貨品類別, SUM(出貨數量) AS 八月出貨量 FROM A WHERE (EXTRACT(MONTH FROM 出貨日期)=8) GROUP BY 貨品編號,貨品類別)
A8,
(SELECT 貨品編號,貨品類別, SUM(出貨數量) AS 本貨品全部出貨量 FROM A GROUP BY 貨品編號,貨品類別)
A9
WHERE A7.貨品編號 = A9.貨品編號
AND A7.貨品類別 = A9.貨品類別
AND A8.貨品編號 = A9.貨品編號
AND A8.貨品類別 = A9.貨品類別 @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@ |
firefall
一般會員 發表:22 回覆:36 積分:11 註冊:2002-05-14 發送簡訊給我 |
引言: SELECT A9.貨品編號,A9.貨品類別, A7.七月出貨量,A8.八月出貨量,A9.本貨品全部出貨量 FROM (SELECT 貨品編號,貨品類別,SUM(出貨數量) AS 七月出貨量 FROM A WHERE (EXTRACT(MONTH FROM 出貨日期)=7) GROUP BY 貨品編號,貨品類別) A7, (SELECT 貨品編號,貨品類別, SUM(出貨數量) AS 八月出貨量 FROM A WHERE (EXTRACT(MONTH FROM 出貨日期)=8) GROUP BY 貨品編號,貨品類別) A8, (SELECT 貨品編號,貨品類別, SUM(出貨數量) AS 本貨品全部出貨量 FROM A GROUP BY 貨品編號,貨品類別) A9 WHERE A7.貨品編號 = A9.貨品編號 AND A7.貨品類別 = A9.貨品類別 AND A8.貨品編號 = A9.貨品編號 AND A8.貨品類別 = A9.貨品類別 @@~~飛翔在天際的精靈~~@@報告版主大大 小弟用Query下達大大的指令,發現它不吃from (Select...) a7,(...)a8,(...) a9 where ... 會出現錯誤訊息,不懂耶!!!?? 感謝版主大大 |
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|
firefall
一般會員 發表:22 回覆:36 積分:11 註冊:2002-05-14 發送簡訊給我 |
|
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|
firefall
一般會員 發表:22 回覆:36 積分:11 註冊:2002-05-14 發送簡訊給我 |
|
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
建議你一種用DELPHI元件方式作,用二個QUERY
QUERY1
SELECT 貨品編號,貨品類別, SUM(出貨數量) AS 本貨品全部出貨量 FROM A
GROUP BY 貨品編號,貨品類別
QUERY1新增二個Calculated的欄位假設為FIELD1,FIELD2
在ONCalcFields寫入以下程式碼
QUERY2.CLOSE;
QUERY2.SQL.TEXT := 'SELECT SUM(出貨數量) AS 七月出貨量 FROM A WHERE ' '(EXTRACT(MONTH FROM 出貨日期)=7) ' 'WHERE 貨品編號 = '
QuotedStr(QUERY1.FieldByName(貨品編號).AsString) 'AND 貨品類別 = '
QuotedStr(QUERY1.FieldByName(貨品類別).AsString) ' GROUP BY 貨品編號,貨品類別';
QUERY2.OPEN;
QUERY1.FieldByName('FIELD1').AsString := QUERY2.FieldS[0].AsString; QUERY2.CLOSE;
QUERY2.SQL.TEXT := 'SELECT SUM(出貨數量) AS 八月出貨量 FROM A WHERE ' '(EXTRACT(MONTH FROM 出貨日期)=8) ' 'WHERE 貨品編號 = '
QuotedStr(QUERY1.FieldByName(貨品編號).AsString) 'AND 貨品類別 = '
QuotedStr(QUERY1.FieldByName(貨品類別).AsString) ' GROUP BY 貨品編號,貨品類別';
QUERY2.OPEN; QUERY1.FieldByName('FIELD2').AsString := QUERY2.FieldS[0].AsString;
QUERY2.CLOSE; 以上這樣雖然麻煩但卻可以達成你的的需求 @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@ |
firefall
一般會員 發表:22 回覆:36 積分:11 註冊:2002-05-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |