以下は、動作保証をしないので、自己責任で確認のこと。プログラム等その他により生じたいかなる損害等その他について、責任を負いませんので、予めご了承してください。
Select
tn.code1 as Name,
S.code2
from
T as tn,
S
Where
S.Code1 >=10
Group by tn.code1,S.code2
HVING tn.code1 >1
Order By tn.code1,S.code2 DESC
;
■行・列
ALL
DISTINCT
DISTINCTROW
■フィールド操作・抽出
cont(n) as name
max
min
avg
sum
code1 Between 1 and 3
code1 in (1,2,3,4)
code1 like '*100%*'
code1 not in (1,2,3,4)
code1 is Null
code1 is not Null
code1 like '*A' and code2=200
code1=1 or code2 = 2
(code1=1 or code1 like '*A') or (code2 = 2)
SELECT [テーブル1].ID, [テーブル1].[フィールド1]
FROM テーブル1;
SELECT T.ID, T.[フィールド1]
FROM テーブル1 as T ;
SELECT T.ID, T.[フィールド1] as F
FROM テーブル1 as T ;
SELECT [テーブル1].ID, [テーブル1].[フィールド1]
FROM テーブル1 Group by [テーブル1].[ID],[テーブル1].[フィールド1] HAVING [テーブル1].[フィールド1]>2 Order by [テーブル1].[フィールド1] DESC;
SELECT T.ID, T.[フィールド1]
FROM テーブル1 as T Group by T.[ID],T.[フィールド1] HAVING T.[フィールド1]>2 Order by T.[フィールド1] DESC;
SELECT T.ID as I1, T.[フィールド1] as F1
FROM テーブル1 as T Group by T.[ID],T.[フィールド1] HAVING T.[フィールド1]>2 Order by T.[フィールド1] DESC;
SELECT T0.I1, T0.F1
FROM (
SELECT T.ID as I1, T.[フィールド1] as F1
FROM テーブル1 as T Group by T.[ID],T.[フィールド1] HAVING T.[フィールド1]>2 Order by T.[フィールド1] DESC
) as T0
Group by T0.I1, T0.F1 HAVING T0.F1 >2 Order by T0.F1 DESC;
SELECT T0.I1 as I0, T0.F1 as F0
FROM (
SELECT T.ID as I1, T.[フィールド1] as F1
FROM テーブル1 as T Group by T.[ID],T.[フィールド1] HAVING T.[フィールド1]>2 Order by T.[フィールド1] DESC
) as T0
Group by T0.I1, T0.F1 HAVING T0.F1 >2 Order by T0.F1 DESC;
INSERT INTO S
(
n0,n1,n2,n3
)
VALUES
(
999,'A','B',#2013/06/26#
)
;
INSERT INTO S
Select * From T
;
INSERT INTO S
Select * From T
where T.code1 >1
;
INSERT INTO テーブル1 ( ID, フィールド1 )
VALUES
(
5,6
);
INSERT INTO テーブル1
VALUES
(
5,6
);
INSERT INTO テーブル1 ( ID, フィールド1 )
SELECT [テーブル2].ID, [テーブル2].[フィールド1]
FROM テーブル2;
INSERT INTO テーブル1
SELECT [テーブル2].ID, [テーブル2].[フィールド1]
FROM テーブル2;
INSERT INTO テーブル1 ( ID, フィールド1 )
SELECT [テーブル2].ID, [テーブル2].[フィールド1]
FROM テーブル2
Where [テーブル2].[フィールド1] >3;
INSERT INTO テーブル1
SELECT [テーブル2].ID, [テーブル2].[フィールド1]
FROM テーブル2
Where [テーブル2].[フィールド1] >3;
UPDATE T SET T.Code1=5, T.code2=3;
UPDATE T SET T.Code1=4 where T.code2=3;
UPDATE テーブル1 SET [テーブル1].ID=5, [テーブル1].[フィールド1]=3;
UPDATE テーブル1 SET [テーブル1].ID=4 where [テーブル1].[フィールド1]=3;
DELETE * FROM T;
DELETE * from T where T.Code1=3;
DELETE * FROM テーブル1;
DELETE from [テーブル1] where [テーブル1].[フィールド1]=3;
DELETE * from [テーブル1] where [テーブル1].[フィールド1]=3;
CREATE TABLE T ( N number,C char);
CREATE TABLE T ( N number CONSTRAINT KEYDATA PRIMARYKEY, C char);
Sample
DROP TABLE T;
Sample
(1)副問い合わせ-基礎
Select T.code,T.data From T where T.data=(Select T.data From T where T.code='AAA');
Select T.code,T.data From T where T.data=(Select max(T.data) From T);
Select T.code,T.name,T.data From T as T2 where T.data=(Select max(T.data) From T where T.code = T2.code) order By T.code;
(1)副問い合わせ-応用
//ALL:得られた値のうちどれよりも等しいか大きい 1,2,3なら3と等しいか3より大きい値がくる
Select * From T where T.day <= ALL(Select T.day From T Where T.code = 'AAA');
//ANY:(SOME)得られた値のうちどれかよりも等しいか大きい 1,2,3なら1と等しいか1より大きい値がくる
Select * From T where T.day <= ANY(Select T.day From T Where T.code = 'AAA');
Select * From T where T.code IN (Select DISTINCT T.code From S);
//cf Select * From T where T.code IN (1,2,3);
//行の有無
Select * From T where EXISTS (Select * From S Where T.code = S.code);
Select * From T where NOT EXISTS (Select * From S Where T.code = S.code);
Sample
(1)INNER JOIN
Select * From T Inner Join S on T.code = S.code;
(2)Left JOIN
Select * From T Left Join S on T.code = S.code;
(3)RIGHT JOIN
Select * From T Right Join S on T.code = S.code;
SELECT *
FROM テーブル1 INNER JOIN テーブル2 ON [テーブル1].[フィールド1] = [テーブル2].[フィールド1];
SELECT *
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1] = [テーブル2].[フィールド1];
SELECT *
FROM テーブル1 RIGHT JOIN テーブル2 ON [テーブル1].[フィールド1] = [テーブル2].[フィールド1];
SELECT [テーブル1].ID, [テーブル1].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[ID] = [テーブル2].[ID]
WHERE ((([テーブル2].ID) Is Null));
SELECT *
FROM テーブル1 INNER JOIN (テーブル2 INNER JOIN テーブル3 ON [テーブル2].[フィールド1] = [テーブル3].[フィールド1]) ON [テーブル1].[フィールド1] = [テーブル2].[フィールド1];
SELECT First([テーブル1].[ID]) AS [ID フィールド], First([テーブル1].[フィールド1]) AS [フィールド1 フィールド], Count([テーブル1].[ID]) AS NumberOfDups
FROM テーブル1
GROUP BY [テーブル1].[ID], [テーブル1].[フィールド1]
HAVING (((Count([テーブル1].[ID]))>1) AND ((Count([テーブル1].[フィールド1]))>1));
TRANSFORM Sum([テーブル4].[フィールド3]) AS フィールド3の合計
SELECT [テーブル4].[フィールド1], Sum([テーブル4].[フィールド3]) AS [合計 フィールド3]
FROM テーブル4
GROUP BY [テーブル4].[フィールド1]
PIVOT [テーブル4].[フィールド2];
注意事項
直積とグループにおける「重複したデータの表示」について注意すること
①基礎
SELECT [テーブル5].[グループ区分], [テーブル5].値
FROM テーブル5
GROUP BY [テーブル5].[グループ区分], [テーブル5].値;
②比較
SELECT [テーブル5].[グループ区分], Sum([テーブル5].[値])
FROM テーブル5
GROUP BY [テーブル5].[グループ区分], [テーブル5].値;
③グループ化
SELECT [テーブル5].[グループ区分], Sum([テーブル5].[値])
FROM テーブル5
GROUP BY [テーブル5].[グループ区分];
SELECT [テーブル5].[グループ区分], Sum([テーブル5].[値]) AS 値の合計
FROM テーブル5
GROUP BY [テーブル5].[グループ区分];
グループ化は大分類、中分類、小分類のグループ毎の集計という感じなので、どういう表構造で集計していくかを考慮する。
④比較のSAMPLE
SELECT [テーブル6].[グループ区分], Sum([テーブル6].値) AS 値の合計, Sum([テーブル6].重み) AS 重みの合計
FROM テーブル6
GROUP BY [テーブル6].[グループ区分], [テーブル6].値, [テーブル6].重み;
©Hirotoshi Takano