T-SQLコードでは、大学の借金金額に関する情報を表から選択します。コード自体は機能しますが、1行を分割する必要があります。 4つの行があり、各債務レベルに1つずつあります。私はおそらくこの時点で単純なものを見逃しているでしょう。SQLを使用して単一の行を複数の行に分割する方法
USE [College Database]
GO
DECLARE @P10W FLOAT, @P25W FLOAT, @P75W FLOAT, @P90W FLOAT, @P10A FLOAT, @P25A FLOAT, @P75A FLOAT, @P90A FLOAT
SELECT @P10W = CONVERT(DECIMAL(6,0),SUM(CUML_DEBT_P10*CUML_DEBT_N)/SUM(CUML_DEBT_N)),
@P25W = CONVERT(DECIMAL(6,0),SUM(CUML_DEBT_P25*CUML_DEBT_N)/SUM(CUML_DEBT_N)),
@P75W = CONVERT(DECIMAL(6,0),SUM(CUML_DEBT_P75*CUML_DEBT_N)/SUM(CUML_DEBT_N)),
@P90W = CONVERT(DECIMAL(6,0),SUM(CUML_DEBT_P90*CUML_DEBT_N)/SUM(CUML_DEBT_N))
FROM CollegeInfo
SELECT
@P10A = CONVERT(DECIMAL(6,0),AVG(CUML_DEBT_P10)),
@P25A = CONVERT(DECIMAL(6,0),AVG(CUML_DEBT_P25)),
@P75A = CONVERT(DECIMAL(6,0),AVG(CUML_DEBT_P75)),
@P90A = CONVERT(DECIMAL(6,0),AVG(CUML_DEBT_P90))
From CollegeInfo
SELECT '10% Debt Level',
CUML_DEBT_P10 AS 'Institution',
@P10A AS 'Average',
@P10W AS ' Weighted Average' ,
'25% Debt Level',
CUML_DEBT_P25 AS 'Institution',
@P25A AS 'Average',
@P25W AS ' Weighted Average' ,
'75% Debt Level',
CUML_DEBT_P75 AS 'Institution',
@P75A AS 'Average',
@P75W AS ' Weighted Average' ,
'90% Debt Level',
CUML_DEBT_P90 AS 'Institution',
@P90A AS 'Average',
@P90W AS ' Weighted Average'
FROM CollegeInfo
WHERE INSTNM LIKE'%Alabama A & M%'
今、それは
10% Debt Level 4750 3530 2816 25% Debt Level 9500 6243 5990 75% Debt Level 37900 18543 27976 90% Debt Level 50114 25147 39153
として読み込み、しかし、それは
このよう10% Debt Level 4750 3530 2816
25% Debt Level 9500 6243 5990
75% Debt Level 37900 18543 27976
90% Debt Level 50114 25147 39153
4つのselect文と 'UNION ALL'を使用します。金額が別々の行にあるため、LoanTypeを配置する必要があるようです。 – xQbert
UNION ALLを使用するコードをどのくらい正確に変更できますか? 行情報は、 "xx%Debt Level"、 " – user7143384
と表示されていますが、私は組合はうまくいくと思いますが、すべてのユーザー変数を使わない方が良い方法かもしれません。それについて考える必要があるだけです。問題は、あなたがレベルの複数の列を持っているという事実で、collegeInfo内に1:Mの関係があることです。これが正規化されていれば、4列ではなく4行になります。したがって、私は組合がすべてのアプローチが適切だと思う。私は4倍の値を持つテーブルへのクロス結合を考え、maxとgroup byを使用していましたが、それがあなたの合計に何をするのかは分かりませんでした。 – xQbert