2012-04-12 19 views
1

ok..i 2つのテーブルがあります... 2つの異なる「企業」を扱うため、列名を除いて全く同じです。私がしたいデータは同じ名前を持つ列にあります。多分私がしたいことは... です。tableA.Col2が> 0ならばtableB.Col2が> 0なら1 ..else 0.theyも必要です別個にする...私は別のテーブルとしてそれらを得ることができます...しかし、私はそれらを一緒に得ることができません。それはC3コードページに送信される方法とそれを読む方法のために1列でそれらを必要とします...構造体はすでに既に設定されています。このようなストアドプロシージャで実行されている他の5つのステートメントがあります(これを設定したものもありません)。あなたが実際の生活のコードを見ているように感じるならば、私は正確なコードを貼り付けます。私はそれを理解しやすくするために単純化しようとしました。2つのSQL列をチェックして結果を1列に表示

DECLARE @id INT; 
DECLARE @invest nvarchar(50); 
SET @id = '7633'; 
SET @invest = ''; 


SELECT 'a' + CONVERT(nvarchar, orderfindings.risk_rating) AS cat, COUNT(DISTINCT orderfindings.prnt_id) AS stat 
     FROM orderheader, orderaudits, orderfindings 
     WHERE orderheader.id = orderaudits.orderheader_id AND orderaudits.ID = orderfindings.prnt_id 
     AND orderheader.id = @id AND orderfindings.risk_rating > 0 AND orderaudits.Investor_Name LIKE '%' + @invest + '%' 
     GROUP BY orderfindings.risk_rating 
UNION ALL 
SELECT 'a' + CONVERT(nvarchar, orderagencies.risk_rating) AS cat, COUNT(DISTINCT orderagencies.prnt_id) AS stat 
     FROM orderheader, orderaudits, orderagencies 
     WHERE orderheader.id = orderaudits.orderheader_id AND orderaudits.ID = orderagencies.prnt_id 
     AND orderheader.id = @id AND orderagencies.risk_rating > 0 AND orderaudits.Investor_Name LIKE '%' + @invest + '%' 
     GROUP BY orderagencies.risk_rating 

------------------- 
/* 
Results from 1st statement 
cat | stat 
----------- 
a1 | 4 
----------- 
a2 | 5 
----------- 

Results from 2nd statement 
cat | stat 
----------- 
a1 | 3 
----------- 
a2 | 2 
----------- 

I pretty much want 

Results from new awesome statement 
cat | stat 
----------- 
a1 | 5 
----------- 
a2 | 5 
----------- 
I think those are the numbers that would be accurate 
Simple version--- if tableA.Col2 is > 0 or tableB.Col2 is > 0 then 1 else 0 
    |Table A    |    Table B     | result of query 
    | col_1  col2  |  col_1    col2   | 
    -------------------------------------------------------------------- 
1 | 1   5  |  1     3   |   1 
2 | 1   45  |  1     0   |   1 
3 | 1   0  |  1     0   |   0 
4 | 1   0  |  1     3   |   1 

so a1 would be 3...4 records in the tables..but only 3 of them matter because row 3 has 0 
whatevers in col 2 for both tables..there might be 100 records that have 1 for col 1..there 
might only be 1 

は、私はそれがちょっと変なタスク

答えて

1

このお試しください:これはちょうど一緒に結果を加算することalso..wouldnt ..私は、キーワード「グループ」付近に正しくない構文を取得

DECLARE @id INT; 
DECLARE @invest nvarchar(50); 
SET @id = '7633'; 
SET @invest = ''; 


SELECT Findings.cat [cat], 
     CASE WHEN Findings.stat > 0 OR Agencies.stat > 0 THEN 1 ELSE 0 END [stat] 

FROM (SELECT 'a' + CONVERT(nvarchar, orderfindings.risk_rating) AS cat, COUNT(DISTINCT orderfindings.prnt_id) AS stat 
     FROM orderheader, orderaudits, orderfindings 
     WHERE orderheader.id = orderaudits.orderheader_id AND orderaudits.ID = orderfindings.prnt_id 
     AND orderheader.id = @id AND orderfindings.risk_rating > 0 AND orderaudits.Investor_Name LIKE '%' + @invest + '%' 
     GROUP BY orderfindings.risk_rating) Findings 
INNER JOIN (SELECT 'a' + CONVERT(nvarchar, orderagencies.risk_rating) AS cat, COUNT(DISTINCT orderagencies.prnt_id) AS stat 
     FROM orderheader, orderaudits, orderagencies 
     WHERE orderheader.id = orderaudits.orderheader_id AND orderaudits.ID = orderagencies.prnt_id 
     AND orderheader.id = @id AND orderagencies.risk_rating > 0 AND orderaudits.Investor_Name LIKE '%' + @invest + '%' 
     GROUP BY orderagencies.risk_rating) Agencies 

ON Findings.cat = Agencies.cat 
+0

で遊ぶ何かを与えます...しかし、私はこれと私の論理を混乱させるかもしれないように感じる私はそれを提示...私の頭の中でそれを通過する必要があります。おそらく私はこれを把握した後、新しい質問をしなければならないでしょう –

+0

いいえ、問題ないです。 –

+0

あなたが別のショットをしたいのであれば...新しい質問がありますhttp://stackoverflow.com/questions/10130318/checking-2-sql-columns-and-displaying-result-in-1-column-pt2 ..私は私が笑いが必要なことを説明する良い仕事をしたと思う。私は希望 –

1

あなたがここにあなたの例からのような要約結果 に含めるためにサブクエリの別のレベルを使用することができますが...これはより理にかなって願っています。

Select cat , SUM(stat) as stat 
FROM 
(
    YOUR FIRST QUERY 
    UNION ALL 
    YOUR SECOND SECOND QUERY 
) AS subquery 
GROUP BY cat 
+0

を?もしそうなら、私がしたいと思っていない複製が含まれています.iは間違っているかもしれません。しかし、それは私に似ています。 –

+0

私はあなたが達成しようとしているものは確かではありませんが、最終結果のためにビットを変更する必要があるかもしれません。 – Turbot

+0

k..iはコード部分の最後に追加されました....私はまだそれをより良い方法で考えようとしています。多くのことが起こっています。 –

関連する問題