kuraki5336 發表在 痞客邦 留言(0) 人氣()

最近在做統計報表,大家都是這樣做的。稍微練習一下 ..

可以把WITH當成一種子查詢,其實我解讀她更像是TempTABLE 可以反覆的讀取內容的資料

並且提高SQL的可讀性

 

 

with MC(促銷名稱) as
(
select MB004 NA from POSMC
LEFT JOIN POSMB ON MB001=MC001 AND MB002 = MC002 AND MB003 = MC003
where MC004 = '4000005'
UNION ALL

select MI004 NA from POSMJ
LEFT JOIN POSMI ON MI001=MJ001 AND MI002 = MJ002 AND MI003 = MJ003
where MJ004 = '5000001'
UNION ALL

select MO004 NA from POSMP
LEFT JOIN POSMO ON MO001=MP001 AND MO002 = MP002 AND MO003 = MP003
where MP005 = '5000001'
)

select * from MC

這樣看起來SQL的閱讀性更佳了 ^Q^

 

01_x_01_00-45-38.png


文章標籤

kuraki5336 發表在 痞客邦 留言(0) 人氣()

這幾天剛好在看一些SQL的相關統計的用法。發現在2005的時候就有增加了一個非常好用的語法

有空來改掉某幾隻的SQL語法,長到讓人不知道怎麼維護

 

統計 時段品號加總 ..

 

 

 

 

SELECT TB010 AS 品號, MB002 AS 品名,
ISNULL(Q1, 0) as '第一季', ISNULL(Q2, 0) as '第二季', ISNULL(Q3, 0) as '第三季', ISNULL(Q4, 0) as '第四季'
FROM (
SELECT
Case
  when SUBSTRING(TB001, 5,2) ='01' then 'Q1'
  when SUBSTRING(TB001, 5,2) ='02' then 'Q1'
  when SUBSTRING(TB001, 5,2) ='03' then 'Q1'
  when SUBSTRING(TB001, 5,2) ='04' then 'Q2'
  when SUBSTRING(TB001, 5,2) ='05' then 'Q2'
  when SUBSTRING(TB001, 5,2) ='06' then 'Q2'
  when SUBSTRING(TB001, 5,2) ='07' then 'Q3'
  when SUBSTRING(TB001, 5,2) ='08' then 'Q3'
  when SUBSTRING(TB001, 5,2) ='09' then 'Q3'
  when SUBSTRING(TB001, 5,2) ='10' then 'Q4'
  when SUBSTRING(TB001, 5,2) ='11' then 'Q4'
  when SUBSTRING(TB001, 5,2) ='12' then 'Q4'
else null End as N'季',
TB010, MB002, SUM(TB033) as '季加總'
FROM dbo.POSTB
LEFT JOIN INVMB ON MB001 = TB010
GROUP BY TB001,TB010, MB002
) as GroupTable
PIVOT
(
Sum(季加總)
FOR 季 IN ([Q1], [Q2], [Q3], [Q4])
) AS PivotTable

呈現結果

 

文章標籤

kuraki5336 發表在 痞客邦 留言(0) 人氣()

透過SUM() OVER 可以省略掉很多子查詢的寫法 .. 且可以很簡易的達到需求

 

SELECT DISTINCT  B.TB010, MB002,
SUM(B.TB019) over(PARTITION BY B.TB010) Qty,    --計算數量
SUM(B.TB019) over(ORDER BY B.TB010) Acc_Qty ,   --累積數量
SUM(B.TB019) over() Total_Qty                   --總數量
FROM POSTB AS  A
INNER JOIN  POSTB AS B ON A.TB001= B.TB001 AND
A.TB002= B.TB002 AND
A.TB003= B.TB003 AND
A.TB006= B.TB006
INNER JOIN  INVMB ON MB001 = B.TB010
WHERE A.TB010 = '5000001' AND B.TB010  '5000001' --AND B.TB001 ='20180731'
ORDER BY Qty desc

 

結果

31_x_31_10-42-49.png


文章標籤

kuraki5336 發表在 痞客邦 留言(0) 人氣()

中午同事在問,能不能用

A*B/C  方程式會變化 
A B C 的 變數 會輸入

怎麼做

從未想過用DELPHI做這個,以前是直接透過MATLAB很簡單就能用了

爬了文一下

http://www.cnblogs.com/dyz/archive/2010/03/09/1681713.html

參考這個的Mathon 

kuraki5336 發表在 痞客邦 留言(0) 人氣()

看到RURU分享的 ....

 

Rtti 紀錄 ENUM... 轉型  筆記一下

 

var
  sAlign: string;
  eAlign: TAlign;
begin
  //Enum to string
  sAlign := TRttiEnumerationType.GetName(Align);

kuraki5336 發表在 痞客邦 留言(0) 人氣()

以往自己在寫網頁的時候會在網頁載入時帶入GA(Google Analytics)的資料收集

收集看網頁的人愛看哪一頁,哪個商品等等的資訊,在分析

看到論壇有人分享Delphi 應用程式也可適用

 

稍微將他的範例改了一下....

 

 

確實OK的呢

 

文章標籤

kuraki5336 發表在 痞客邦 留言(0) 人氣()

Delphi 標準都不改設定的時候發佈會遇到這個錯誤

 

 

其實他不算是錯誤只是個溫馨的小提醒....

 

主要是因為我們當FMX專案檔開起來之後

目錄下面會有一個AndroidManifest.template.xml

當組譯之後她會變成AndroidManifest.xml 夾帶在你的APK裡面,方便用戶識別你的版本

文章標籤

kuraki5336 發表在 痞客邦 留言(0) 人氣()

做這件事情只是我很好奇 為什麼 Delphi 一值沒辦法串好restrul API

有時候這樣寫可以有時候就不行....

 

 

介紹三種常見的API使用方式

#1 URL 直接帶入參數

#2 Body參數

#3 Uri 帶入參數

 

文章標籤

kuraki5336 發表在 痞客邦 留言(2) 人氣()

#怕自己失意 先做這個註記

 

在webapi實寫的時候,由於程式會在本機的SQL做測試

發佈到雲端的時候則會轉變成雲端的資料庫

因此在SQL的連線字串上就要有所變化。

 

#1 首先我們在web.config上設定我們本機的連線字串

程式就能直接在網頁上跑

 

文章標籤

kuraki5336 發表在 痞客邦 留言(0) 人氣()