想請教
如果有二個資料表
A表的資料欄位為
Store_ID (ID)
Store_Name (店名)
Sales (銷售額)
Txn_Dat (日期)
B表的資料欄位為
Region_Name (區域)
Store_Name (店名)
我想要將A表合併B表
顯示出各區域店家的總銷售額
Region_Name,Store_Name,Sales
但因為A表與B表
不管是用left,right,inner或full
Store_Name都會是呈現出二個相同欄位(因AB表都有)
所以如果用group by來做合併
就無法使用Store_Name來做合併點
請問我的語法該怎麼下才能解決問題
CREATE TABLE A (
Store_ID nvarchar(20), -- (ID)
Store_Name nvarchar(20), -- (店名)
Sales int, -- (銷售額)
Txn_Dat nvarchar(20) -- (日期)
);
INSERT INTO A (Store_ID,Store_Name,Sales,Txn_Dat)
VALUES
('1','x',10,'2021/10/01'),
('2','x',20,'2021/10/02'),
('3','y',50,'2021/10/03');
CREATE TABLE B (
Region_Name nvarchar(20), -- (區域)
Store_Name nvarchar(20) -- (店名)
);
INSERT INTO B (Region_Name,Store_Name)
VALUES
('M','x'),
('K','y'),
('G','Z');
SELECT B.Region_Name,P.Store_Name,ISNULL(P.Sales,0) AS Sales
FROM B
LEFT JOIN (
SELECT A.Store_Name,SUM(Sales) AS Sales
FROM A
GROUP BY A.Store_Name) AS P ON B.Store_Name=P.Store_Name
你忘記可以設定別名@@..
a.Store_Name as A_Store_Name
b.Store_Name as B_Store_Name
相同名稱處理方式就是加前綴
簡單例子:
SELECT a.[store_Name], b.[store_Name]
FROM [table_1] AS a, [table_2] AS b
create table A(
Store_ID int not null,
Store_Name varchar(50),
Sales varchar(20),
Txn_Date Datetime
);
create table B(
Region_Name varchar(100),
Store_Name varchar(50),
);
insert into A
VALUES ('1', 'A_Shop', 'A_Sales', getdate()),
('2', 'B_Shop', 'B_Sales', '2021-10-10'),
('3', 'C_Shop', 'C_Sales', '2021-11-11')
insert into B
VALUES ('台北', 'A_Shop'),
('台中', 'B_Shop'),
('高雄', 'C_Shop')
select b.Region_Name, a.Store_Name, a.Sales
from a join b on a.Store_Name = b.Store_Name
你的資料表結構怪怪的
正常會是
門市資料表 store
Store_ID (門市代碼) key
Store_Name (店名)
Region_Name (區域)
交易資料表 sell
Store_ID (門市代碼) key
SellSno (交易單號) key
Total (交易金額)
Txn_Dat (交易日期)
Txn_Time (交易時間)
select A.Store_ID ,B.Store_Name,B.Region_Name ,Sum(A.Total) As Sales from sell As A
left join store As B
on A.Store_ID = B.Store_ID
GROUP BY A.Store_ID
同意樓上
-----你的
A表:
Store_ID (ID)
Store_Name (店名)
Sales (銷售額)
Txn_Dat (日期)
B表:
Region_Name (區域)
Store_Name (店名)
這樣的缺點就是遇到『同店名,不同老闆的銷售額要怎麼區分?』
就跟客戶資料為什麼要用身分證字號來當key值一樣
因為身分證字號是唯一的,同名同姓的人太多了。
你直接group by store name跟region name 不行嗎?反正就是看不同區域的分店銷售總額