|
▼SinjiM さん:
おはようございます。
>例えば、FLD1、FLD2、FLD3ともにゼロのレコードを除外する場合
当方が思いつく限りですが、方法は2通りあると思われます。
1) Unionクエリを作る前の段階で除外
TRANSFORM Max(P.FLD1) AS FLD1の最大
SELECT P.Code
FROM [
SELECT テーブル名.Code,
テーブル名.Name & "_FLD1" AS FLD0,
テーブル名.FLD1
FROM テーブル名
WHERE (テーブル名.FLD1=0 And テーブル名.FLD2=0 And テーブル名.FLD3=0)=False
UNION ALL
SELECT テーブル名.Code,
テーブル名.Name & "_FLD2" AS FLD0,
テーブル名.FLD2
FROM テーブル名
WHERE (テーブル名.FLD1=0 And テーブル名.FLD2=0 And テーブル名.FLD3=0)=False
UNION ALL
SELECT テーブル名.Code,
テーブル名.Name & "_FLD3" AS FLD0,
テーブル名.FLD3
FROM テーブル名
WHERE (テーブル名.FLD1=0 And テーブル名.FLD2=0 And テーブル名.FLD3=0)=False
]. AS P
GROUP BY P.Code
PIVOT P.FLD0
2)Unionクエリ結合後に除外
TRANSFORM Max(P.FLD1) AS FLD1の最大
SELECT P.code
FROM [
SELECT
テーブル名.code,
テーブル名.Name,
テーブル名.name & "_FLD1" AS FLD0,
テーブル名.FLD1
FROM テーブル名
UNION ALL
SELECT
テーブル名.code,
テーブル名.Name,
テーブル名.name & "_FLD2" AS FLD0,
テーブル名.FLD2
FROM テーブル名
UNION ALL
SELECT
テーブル名.code,
テーブル名.Name,
テーブル名.name & "_FLD3" AS FLD0,
テーブル名.FLD3
FROM テーブル名
]. AS P
INNER JOIN テーブル名
ON (P.code = テーブル名.Code) AND (P.Name = テーブル名.Name)
WHERE
([テーブル名].[FLD1]=0 And [テーブル名].[FLD2]=0 And [テーブル名].[FLD3]=0)=False
GROUP BY P.code,
[テーブル名].[FLD1]=0 And [テーブル名].[FLD2]=0 And [テーブル名].[FLD3]=0
PIVOT P.FLD0;
条件抽出に「FLD1=0」かつ「FLD2=0」かつ「FLD3=0」が偽(笑)という
何とも複雑な SQL文を書いておりますが、
例えば 各FLDの値はマイナスにならない、という仕様があれば
FLD1 + FLD2 + FLD3 > 0
のような単純な WEHRE句 も使えるかと思われます。
|
|