簡體   English   中英

將SQL Server SQL查詢轉換為MySQL

[英]Convert SQL Server SQL query to MySQL

以下是我想轉換為MySQL的SQL Server查詢:

SELECT SaleDetail.cTaxiNo, Category.cCarName, qryDriverExpenses.nAmount,
       Sale.nInvoiceNo, Sale.cCustomerName, IIf([cPackageType] ='GENERAL', 
       [nProviderRate],[nProviderRate]/[nProviderKM]) AS nARate, SaleDetail.nKM, 
       SaleDetail.nAmount, Sale.dInvoiceDate, qryFuel.nAmount, 
       SaleDetail.nProviderKM, SaleDetail.nProviderRate
FROM qryFuel 
RIGHT JOIN (((Sale INNER JOIN SaleDetail ON Sale.nSalePk = SaleDetail.nSalePk) 
INNER JOIN (CarMaster 
INNER JOIN Category 
ON CarMaster.nCategoryPk = Category.nCategoryPK) ON SaleDetail.cTaxiNo = 
     CarMaster.cCarNo) 
LEFT JOIN qryDriverExpenses 
    ON SaleDetail.nTourBookingpk = qryDriverExpenses.nTourBookingPK) 
ON qryFuel.nTourBookingPK = 
     SaleDetail.nTourBookingpk

ORDER BY Sale.nInvoiceNo, Sale.dInvoiceDate; 

我收到錯誤sql

語法錯誤。 在[cPackageType]附近

請幫忙!

SQL Server IIfMySQLIf

SELECT SaleDetail.cTaxiNo, Category.cCarName, qryDriverExpenses.nAmount,
   Sale.nInvoiceNo, Sale.cCustomerName, 
   IF(cPackageType ='GENERAL', nProviderRate, nProviderRate/nProviderKM) AS nARate, 
   SaleDetail.nKM, SaleDetail.nAmount, Sale.dInvoiceDate, qryFuel.nAmount, 
    SaleDetail.nProviderKM, SaleDetail.nProviderRate
FROM qryFuel RIGHT JOIN 
(((Sale INNER JOIN SaleDetail ON Sale.nSalePk =            
  SaleDetail.nSalePk) INNER JOIN (CarMaster INNER JOIN Category ON 
 CarMaster.nCategoryPk = Category.nCategoryPK) ON SaleDetail.cTaxiNo = 
 CarMaster.cCarNo) LEFT JOIN qryDriverExpenses ON SaleDetail.nTourBookingpk 
 = qryDriverExpenses.nTourBookingPK) 
 ON qryFuel.nTourBookingPK = SaleDetail.nTourBookingpk    
ORDER BY Sale.nInvoiceNo, Sale.dInvoiceDate; 

使用這些聯接只是在麻煩。 請研究正確的連接語法, https://technet.microsoft.com/zh-cn/library/ms191517%28v=sql.105%29.aspx 這是格式化查詢:

SELECT SaleDetail.cTaxiNo
,Category.cCarName
,qryDriverExpenses.nAmount
,Sale.nInvoiceNo
,Sale.cCustomerName
,CASE WHEN `cPackageType` ='GENERAL' THEN 
        `nProviderRate`
    ELSE
        `nProviderRate`/`nProviderKM`
    END AS nARate
,SaleDetail.nKM
,SaleDetail.nAmount
,Sale.dInvoiceDate
,qryFuel.nAmount
,SaleDetail.nProviderKM
,SaleDetail.nProviderRate
FROM qryFuel 
INNER JOIN SaleDetail
    ON qryFuel.nTourBookingPK = SaleDetail.nTourBookingpk
RIGHT OUTER JOIN Sale
    ON Sale.nSalePk = SaleDetail.nSalePk
INNER JOIN CarMaster 
    ON SaleDetail.cTaxiNo = CarMaster.cCarNo
INNER JOIN Category 
    ON CarMaster.nCategoryPk = Category.nCategoryPK
LEFT OUTER JOIN qryDriverExpenses 
    ON SaleDetail.nTourBookingpk = qryDriverExpenses.nTourBookingPK
ORDER BY Sale.nInvoiceNo, Sale.dInvoiceDate; 
SELECT SaleDetail.cTaxiNo, Cate;ry.cCarName, qryDriverExpenses.nAmount,
   Sale.nInvoiceNo, Sale.cCustomerName, If(`cPackageType` ='GENERAL', 
`nProviderRate`,`nProviderRate`/`nProviderKM`) AS nARate, SaleDetail.nKM, 
SaleDetail.nAmount, Sale.dInvoiceDate, qryFuel.nAmount, 
SaleDetail.nProviderKM, SaleDetail.nProviderRate


  FROM qryFuel RIGHT JOIN (((Sale INNER JOIN SaleDetail ON Sale.nSalePk =            
  SaleDetail.nSalePk) INNER JOIN (CarMaster INNER JOIN Cate;ry ON 
 CarMaster.nCate;ryPk = Cate;ry.nCate;ryPK) ON SaleDetail.cTaxiNo = 
 CarMaster.cCarNo) LEFT JOIN qryDriverExpenses ON SaleDetail.nTourBookingpk 
 = qryDriverExpenses.nTourBookingPK) ON qryFuel.nTourBookingPK = 
 SaleDetail.nTourBookingpk

   ORDER BY Sale.nInvoiceNo, Sale.dInvoiceDate; 

用引號括住的列名應用記號括起來,而不是方括號。

嘗試這個。 MySQL使用IF而不是IIF,並且也不像方括號一樣:

SELECT SaleDetail.cTaxiNo, Category.cCarName, qryDriverExpenses.nAmount,
   Sale.nInvoiceNo, Sale.cCustomerName, If(cPackageType ='GENERAL', 
nProviderRate,nProviderRate/nProviderKM) AS nARate, SaleDetail.nKM, 
SaleDetail.nAmount, Sale.dInvoiceDate, qryFuel.nAmount, 
SaleDetail.nProviderKM, SaleDetail.nProviderRate


  FROM qryFuel RIGHT JOIN (((Sale INNER JOIN SaleDetail ON Sale.nSalePk =            
  SaleDetail.nSalePk) INNER JOIN (CarMaster INNER JOIN Category ON 
 CarMaster.nCategoryPk = Category.nCategoryPK) ON SaleDetail.cTaxiNo = 
 CarMaster.cCarNo) LEFT JOIN qryDriverExpenses ON SaleDetail.nTourBookingpk 
 = qryDriverExpenses.nTourBookingPK) ON qryFuel.nTourBookingPK = 
 SaleDetail.nTourBookingpk

   ORDER BY Sale.nInvoiceNo, Sale.dInvoiceDate;

IIF在MySQL中無效

更改

IIf([cPackageType] ='GENERAL', 
       [nProviderRate],[nProviderRate]/[nProviderKM]) AS nARate

if [cPackageType] = 'GENERAL' then nProviderRate 
 else nProviderRate/nProviderKM
end as nARate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM