select?t1.shop,sum(t1.qty)?as?qty,t2.sum_qty?from?表名?as?t1,
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)武威免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
(select?sum(qty)?as?sum_qty?from?表名)?as?t2
group?by??t1.shop,t2.sum_qty
時(shí)間條件你自己加一下吧,應(yīng)該沒(méi)問(wèn)題吧?
這里假設(shè)表格為:一個(gè)類型表和一個(gè)新聞表,取出類型表中的每個(gè)新聞?lì)愋投疾槌鲂侣劚碇袑儆谠擃愋偷淖钚碌那?0條
select?標(biāo)題,編號(hào),時(shí)間,類型編號(hào),類型名稱?from?
(?select?
RANK()OVER(PARTITION?BY?新聞表.類型編號(hào)?ORDER?BY?新聞表.時(shí)間?DESC)?AS
RANK2,?標(biāo)題,編號(hào),時(shí)間,新聞表.類型編號(hào),類型名稱?from?
新聞表?left?join?類型表?On?新聞表.類型編號(hào)?=?類型表.類型編號(hào))?T
where?RANK2=10
CREATE TABLE #test(
itemCode VARCHAR(10),
itemAmount INT
);
go
INSERT INTO #test
SELECT '1010001', 1000 UNION ALL
SELECT '1010002', 500 UNION ALL
SELECT '1010003', 700 UNION ALL
SELECT '1010004', 200 UNION ALL
SELECT '1010005', 1300 UNION ALL
SELECT '1010006', 1200 UNION ALL
SELECT '1010007', 100 UNION ALL
SELECT '1010008', 600 UNION ALL
SELECT '1010009', 800 UNION ALL
SELECT '1010010', 700 UNION ALL
SELECT '1010011', 500 UNION ALL
SELECT '1010012', 1000 UNION ALL
SELECT '1010013', 300 UNION ALL
SELECT '1010014', 400 UNION ALL
SELECT '1010015', 900 UNION ALL
SELECT '1010016', 800 UNION ALL
SELECT '1010017', 200 UNION ALL
SELECT '1010018', 100 UNION ALL
SELECT '1010019', 1100 UNION ALL
SELECT '1010020', 1200;
go
With MyCte AS
(
SELECT
ROW_NUMBER() OVER( ORDER BY itemAmount DESC ) AS NO,
t.itemCode,
t.itemAmount
FROM
#test t
)
SELECT
itemCode,
itemAmount,
STR( 100 * itemAmount / tSum.itemAmountSum, 5, 2) + '%' AS [占比],
CASE
WHEN (SELECT SUM(itemAmount) FROM MyCte M2 WHERE M2.NO = MyCte.NO ) / tSum.itemAmountSum = 0.5 THEN 'A'
WHEN (SELECT SUM(itemAmount) FROM MyCte M2 WHERE M2.NO = MyCte.NO ) / tSum.itemAmountSum 0.5
AND (SELECT SUM(itemAmount) FROM MyCte M2 WHERE M2.NO = MyCte.NO ) / tSum.itemAmountSum 0.8 THEN 'B'
ELSE 'C' END AS [類別]
FROM
MyCte,
(SELECT SUM(itemAmount) * 1.0 AS itemAmountSum FROM #test) tSum
ORDER BY
MyCte.itemAmount DESC;
itemCode itemAmount 占比 類別
---------- ----------- ------ --
1010005 1300 9.56% A
1010006 1200 8.82% A
1010020 1200 8.82% A
1010019 1100 8.09% A
1010001 1000 7.35% A
1010012 1000 7.35% A
1010015 900 6.62% B
1010016 800 5.88% B
1010009 800 5.88% B
1010010 700 5.15% B
1010003 700 5.15% B
1010008 600 4.41% C
1010002 500 3.68% C
1010011 500 3.68% C
1010014 400 2.94% C
1010013 300 2.21% C
1010017 200 1.47% C
1010004 200 1.47% C
1010007 100 0.74% C
1010018 100 0.74% C
(20 行受影響)
SQL Server 2008 Express 下測(cè)試通過(guò).
可用如下方法:
以sqlserver2008r2為例,可以從系統(tǒng)表中sys.objects來(lái)取字段。
1、打開SQL Server Managment Studio,并登陸到指定數(shù)據(jù)庫(kù)。
2、新建一個(gè)查詢窗口。
3、使用如下語(yǔ)句:
select?name?from?sys.objects?where?type='U';
查詢結(jié)果:
其中name列的內(nèi)容就是當(dāng)前登陸用戶下的所有表名。
建立表結(jié)構(gòu)如下: CREATE table [dbo].[tmp_Trans]( IDintidentity, PO_NO varchar(20) null, PO_Itemno varchar(20) null, Qty numeric(18,6) null, Trans_Date datetime null, Doc_no varchar(20) null)要求取相同PO_NO按Trans_Date倒序排序的前兩條記錄。 1.Where子句嵌套SELECT的方式。在嵌套的SELECT語(yǔ)句中可以與主表的字段相關(guān)聯(lián),達(dá)到分類的目的。 這種方式又有三種寫法: 1)如果表中有主鍵,可以用IN的方式。 SELECT * FROM tmp_Trans t WHERE ID IN( SELECT TOP 2 ID FROM tmp_Trans WHERE PO_NO=t.PO_NO ORDER BY Trans_Date DESC)2)如果沒(méi)有主鍵,可以用判斷在本條記錄前有多少條記錄的方式。但使用這種方式時(shí)如果遇到Trans_Date相同的情況會(huì)不準(zhǔn)。如當(dāng)存在Trans_Date最大的記錄有三條時(shí),這三條記錄都會(huì)查出來(lái)。 SELECT *FROM tmp_Trans tWHERE (SELECT COUNT(*) FROM tmp_Trans WHERE PO_NO=t.PO_NO AND Trans_DateT.Trans_Date)23)使用CROSS APPLY子句。CROSS APPLY是SQL Server 2005后出來(lái)的新功能,用于在表連接時(shí)傳入?yún)?shù)。 SELECT DISTINCT b.* FROM tmp_Trans a CROSS APPLY(SELECT TOP(2) * FROM tmp_Trans WHERE a.PO_NO=PO_NO ORDER BY Trans_Date DESC) b 2.使用自動(dòng)生成的Row Number。在使用ROW_NUMBER()時(shí)可以用PARTITION BY子句來(lái)分組。建議使用這種方式。select * from (
sqlserver(T_SQL):
DDL—數(shù)據(jù)定義語(yǔ)言(CREATE,ALTER,DROP,DECLARE)
DML—數(shù)據(jù)操縱語(yǔ)言(SELECT,DELETE,UPDATE,INSERT)
DCL—數(shù)據(jù)控制語(yǔ)言(GRANT,REVOKE,COMMIT,ROLLBACK)
Oracle SQL(P_SQL) 語(yǔ)句可以分為以下幾類:
1.數(shù)據(jù)操作語(yǔ)言語(yǔ)句[Data manipulation language,DML]
2.數(shù)據(jù)定義語(yǔ)言語(yǔ)句[Data definition language,DDL]
3.事務(wù)控制語(yǔ)句[transaction control statement]
4.會(huì)話控制語(yǔ)句[session control statement]