求教各位大神,這個總表視圖怎么建?
視圖里沒有日期,但希望加上開始日期和結束日期的條件,后面在網頁上輸入,可以得到對應日期內的新簽總金額
uj5u.com熱心網友回復:
declare @tb1 table(地區 nvarchar(10),金額 money,時間 datetime,合同號 varchar(10))
declare @tb2 table(地區 nvarchar(10),金額 money,時間 datetime,合同號 varchar(10))
select sum(a.金額) as 總簽約金額,sum(b.金額) as 總到賬金額
from @tb1 a
left join @tb2 b on a.合同號=b.合同號
where a.時間 between '2019-1-1' and '2020-1-1'
uj5u.com熱心網友回復:
我可能表達的不是很清楚,再傳個圖uj5u.com熱心網友回復:
不要傳圖片,把問題用文字描述清楚正確的描述問題,才能進行各方面的溝通,比如:老版(完全不懂技術的人),產品經理(思路奇葩的人),專案經理(性格刻板的人),同事(不在一個頻道的人)
uj5u.com熱心網友回復:
新簽表:欄位有地區,新簽金額,新簽時間,合同號;
值如(’北京’, 1000,2019-1-1,’001’),
(‘合肥’, 500, 2019-5-1,’002’),
(‘北京’, 2000,2019-8-1,’003’)
到款表:
欄位有地區,到款金額,到款時間,合同號;
值如 (’北京’,500, 2019-4-1,’001’),
(‘天津’,500, 2019-3-1,’004’),
(‘天津,2000,2019-10-1,’005’)
需要創建的視圖:
地區 北京 合肥 天津 上海 …
新簽 1000+2000 500 0 0…
到款 500 0 500+2000 0…
查詢條件加入開始時間和結束時間,如開始時間輸入為2019-1-1,結束時間輸入為2019-5-1,則視圖中的新簽和到款為該時間內的新簽、到款表中對應地區的金額的和。
另:地區的合集是固定的,如一共10個地區,但新簽表和到款表中的地區不一定涵蓋所有地區。如果表中沒有視圖中的地區,那么則該地區對應的新簽和到款金額為0。
uj5u.com熱心網友回復:
總表的最后還有一列每行的合計uj5u.com熱心網友回復:
你這個。。。用存盤程序好弄,用視圖的話,不太好弄,行轉列在group外邊,但條件應該和group同級,所以條件也應該在行轉列里面。。。uj5u.com熱心網友回復:
declare @tb1 table(地區 nvarchar(10),金額 money,時間 date,合同號 varchar(10))
declare @tb2 table(地區 nvarchar(10),金額 money,時間 date,合同號 varchar(10))
insert into @tb1 values('北京',1000,'2019-1-1','001'),('合肥',500,'2019-5-1','002'),('北京',2000,'2019-8-1','003')
insert into @tb2 values('北京',500,'2019-4-1','001'),('天津',500,'2019-3-1','004'),('天津',2000,'2019-10-1','005')
select 地區,sum(北京),sum(天津),sum(上海),sum(合肥),sum(重慶),sum(深圳),sum(廣州)
from (
select '新簽' as 地區,時間,北京,天津,上海,合肥,重慶,深圳,廣州
from @tb1
pivot(max(金額) for 地區 in (北京,天津,上海,合肥,重慶,深圳,廣州)) p
union all
select '到款' as 地區,時間,北京,天津,上海,合肥,重慶,深圳,廣州
from @tb2
pivot(max(金額) for 地區 in (北京,天津,上海,合肥,重慶,深圳,廣州)) p
) a
--where 時間 between '2019-1-1' and '2019-5-1'
group by 地區
大概琢磨了下,提前行轉列,然后group,看看這樣的方式弄成視圖能不能用
uj5u.com熱心網友回復:
SELECT '新簽' AS TYPE,地區 AS AREA,新簽金額 AS AMOUNT,新簽時間 AS OPR_DATE,合同號 AS CONTRACT FROM 新簽表
UNION ALL
SELECT '到款' ,地區,到款金額T,到款時間,合同號 FROM 到款表
用以上做個視圖,然后以視圖的OPR_DATE來進行時間上的查詢,把得出的結果集再進一步的用CASE WHEN或者PIVOT來進行行列轉換試試。
uj5u.com熱心網友回復:
存盤程序是怎么個做法?直接在代碼里計算好寫進去?轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/99128.html
標籤:疑難問題
上一篇:什能來教教我,才剛剛接觸C語言,很菜 求幫助,謝謝!
下一篇:近期學習計劃
